コマンドラインからスクリプトを使用してフォトアルバムをスキャンします

明らかにいくつかあります 写真をスキャンするためのグラフィカルインターフェイス、多数のオプションを提供します。 しかし、スキャンする写真の数が多く、自動シートフィーダーを備えたスキャナーがない場合、状況は厳しくなります。 一般に、スキャンするにはクリックする必要があり、保存するにはウィンドウの反対側でもう一度クリックする必要があります...時間がかかります。 とにかく、使用する良い言い訳 コマンドライン.

これはRubénからの寄稿であり、毎週のコンテストの勝者のXNUMX人になります。«Linuxについて知っていることを共有する«。 ルベンおめでとう!

私は上の記事を読みました GIMPによるバッチ画像処理 y ターミナルから画像を操作する方法、ちょうど私の友人のフギトが1989年に行った旅行の写真(彼が失った)を私に求めた日…(4枚の写真の36つのロール!そしてもちろん紙の上で🙂。写真をスキャンするためのこのヒントを思い出しました忘れていたこと。

アイデアは、スクリプトを使用してできるだけ速く実行することです。

1.-スキャナーに写真を載せる
2.-スキャンするには任意のキーを押します
3.-押されたキーが、たとえば「n」で終了する場合を除いて、手順を繰り返します。
4.-写真は事前に設定されたサブディレクトリに保存され、番号が付けられます。

どんなコマンド?

'magic'コマンドは、SANEの一部であるscanimageです。 SANEは、任意のイメージングデバイスへの標準化されたアクセスを提供するAPIです。 Sane APIはパブリックドメインにあり、そのソースコードはGNU General PublicLicenseの下で利用できます。

インストールは簡単です。 各ディストリビューションはそのパッケージをもたらします。 Ubuntu(またはその派生物)の場合、synapticを使用し、saneおよびsane-utilsをインストールするだけで十分です。

使い方?

ターミナル「manscanimage」に書き込むのが常に最善です。 ただし、使用するオプションを要約します。

ターミナルを開き、scanimage -Lを実行して、使用可能なデバイスを確認します。

スキャンイメージ -L

私の場合、それは戻ります:

デバイス `xerox_mfp:libusb:001:005 'はSAMSUNGORION多機能周辺機器です

これは私のSamsungSCX-4200多機能で私に与えた結果です。 MFPを使用していてデバイスが見つからない場合は、印刷が保留中など、プリンターがアクティブでないことを確認してください。

値 'xerox_mfp:libusb:001:003'は、-dオプションを使用してどのデバイスを使用するかをscanimageコマンドに指示するために使用されます。 スキャナーがXNUMXつだけ接続されている場合、このオプションは必要ありません。

scanimageコマンドがスキャンすると、結果の画像がpnmまたはtiff形式で標準出力に送信されます。 したがって、スキャンするには、出力をファイルにリダイレクトします。 また、コマンドがどのようなメッセージを表示しているかを確認したい場合は、-vオプションを追加します。 操作の進行状況のパーセンテージも確認したい場合は、-pオプションを追加します。

scanimage -v -p> image.tiff

scanimage:1284ビット/ピクセルでサイズ1734x24ピクセルのスキャン画像
scanimage:RGBフレームの取得
scanimage:最小/最大グレーレベル値= 69/255
scanimage:合計6679368バイトを読み取ります
進行状況:13.8%

scanimage –helpを実行すると、何が得られますか? 当たり前のようですが、コマンドの助けになります。 しかし、このコマンドには特殊性があります。 コマンドの一般的なヘルプの最後に、スキャナーが受け入れる特定のパラメーターを追加します。

scanimage --ヘルプ

使用法:scanimage [オプション]..。

BLA bla...。

デバイスに固有のオプション `xerox_mfp:libusb:001:005 ':

標準:
--resolution 75 | 100 | 150 | 200 | 300 | 600dpi [150]スキャンした画像の解像度を設定します。
--mode線画|ハーフトーン|グレー|色[色]スキャンモード(線画、モノクロ、カラーなど)を選択します。
-ハイライト30..70%(10刻み)[非アクティブ]最小の明るさを選択して、白い点を取得します
--source Flatbed | ADF | Auto [Flatbed]スキャンソース(ドキュメントフィーダーなど)を選択します。
ジオメトリ:
-l 0..215.9mm(1刻み)[0]スキャン領域の左上x位置。
-t 0..297.18mm(1刻み)[0]左上とスキャン領域の位置。
-x 0..215.9mm(1刻み)[215.9]スキャン領域の幅。
-y 0..297.18mm(1刻み)[297.18]スキャン領域の高さ。

`` scanimage --help -d DEVICE ''と入力して、DEVICEのすべてのオプションのリストを取得します。

利用可能なデバイスのリスト:

xerox_mfp:libusb:001:005

ここから、使用できる値を持つオプションを選択できます。

例:

分解能

–解像度150

モード

–モードカラー

今度はジオメトリ。 これは、セクター(写真を配置する場所)の画像のみを抽出するようにスキャナーに指示できるため、非常に便利です。また、このようなグラフィックエディターで後でカットする必要がある残りの表面をスキャンする時間を節約できます。 Gimpとして。

-l 0は、スキャナーの左上隅から0mmから水平方向にスキャンを開始します

-t 0は、スキャナーの左上隅から0mmから垂直方向にスキャンを開始します

配置が簡単なため、写真をスキャナーの隅に配置することを選択したことに注意してください[座標(0,0)]。 私のスキャナー(A4サイズ)では、lは0から215.9に、tは0から297.18になります。

写真の幅と高さ。 私の場合、写真は13x18cmです。

-x180幅

-そして130の高さ

したがって、写真を配置した部分のみをスキャンします。 もちろん、左、右、幅、高さ、上部、下部が何であるかについて合意すれば。 それはあなたがあなたのスキャナーをどのように見るかに依存します。 座標をテストし、ニーズに合わせて調整することをお勧めします。

コマンドの例は次のとおりです。

scanimage -d xerox_mfp:libusb:001:003 -p --mode Color --resolution 150 -l 0 -t 0 -x 180 -y 130> image.pnm

これらのオプションを使用すると、すでにスクリプトを作成できます。

しかし前に…

Tiffまたはpnmは非圧縮形式であるため、写真は膨大なディスク容量を占有します。 これは、ターミナルから画像を操作する方法で説明されているImageMagick変換コマンドの出番です。

スキャナーからimage.pnmを取得した場合、それをjpgに変換できます。

image.pnmimage.jpgを変換します

しかし、そうする前に、別のトリック:

Image.pnmは多くのスペースを占めるため、image.jpgを取得した後で削除する必要があります。 変換コマンドには、ディスクからファイルを取得する代わりに、標準入力を直接変換するオプションがあります。 これは、ファイルの代わりにダッシュで実行されます。

変換-image.jpg

scanimageはスキャンした画像を標準出力に配信するため、「パイプライン」を作成し、image.pnmファイルの書き込みとディスクからの削除にかかる処理時間を節約します。

scanimage -d xerox_mfp:libusb:001:003 -p --mode Color --resolution 150 -l 0 -t 0 -x 180 -y 130 | 変換-image.jpg

はい、スクリプト...

scan-album.shというファイルに次のコードを記述し、実行権限を付与します。 それを実行すると、スキャンした写真が置かれるサブディレクトリが作成されます。 必要に応じてパラメータ値を変更することを忘れないでください。

スクリプトの後にいくつかの提案を必ず読んでください。

#!/ bin / bashに
#オプションのデータ

VERBOSE = ""#ステータスメッセージを参照: ""ではありません; 「-v」は「はい」です
PROGRESS = "-p"#進行状況を表示 "" is no; 「-p」は「はい」です

#次のパラメーターはscanimageによって提供されます-スキャナーのヘルプ
#Device:スキャナーがXNUMXつしかない場合は、必要ありません。DEV= ""を入力してください。
#DEV = "xerox_mfp:libusb:001:003"

DEV = ""
MODE = "-モードカラー"
RESOLUTION = "-解像度600dpi"

#ジオメトリ、例:130x180mmの写真
左上の頂点スキャナーの#location

x0 = 0
y0 = 0
幅= 180
高= 130

#options:

L = "-l $ x0"
T = "-t $ y0"
WIDTH = "-x $ width"
HIGH = "-および$ high"

#すべてのパラメータを一緒に:

PARAMETERS = "$ DEV $ VERBOSE $ PROGRESS $ MODE $ RESOLUTION $ L $ T $ WIDTH $ HIGH"

#アルバムの名前。 次の名前でサブディレクトリを作成します。

ALBUM = "Holidays_1989"

#セキュリティのため、ディレクトリがすでに存在する場合は何もしません

mkdir $ ALBUM

if ["$?" = "1"]; その後
100番出口
fi

#写真のベース名(サブディレクトリ内)

FILE = "./" $ ALBUM "/" $ ALBUM "_foto_"

関数の質問(){
捨てた " - - - - - - - - - - - - - - - - - - - - - - - - --------------------------- "
echo
捨てた "******************************"
echo "スキャンした写真の数:" "$ I"
捨てた "******************************"
echo -e "押す:n * n終了するには*スキャンする別のキー。"
echo
-s -n1 -p「新しい写真をスキャンしますか?」を読んでください。 キーを押す
echo
}

##############################################

#開始

##############################################

I = 0

質問

while ["$ keypress"!= "n"]; 行う
#スキャンする新しい写真
「I + = 1」
名前= $ファイル$ I
scanimage $ PARAMETERS | 変換-$ NAME.jpg
質問
行われ

提案

例のような高解像度を使用すると、スキャンが非常に遅くなります。

写真を紙に印刷する場合は、250インチあたり約250ドットが必要であることに注意してください。 写真をスキャンするというアイデアが元の写真と同じサイズで印刷することである場合、100の解像度で十分です.XNUMXのモニターで写真を表示するには十分です。 より高い解像度は拡大に役立ちます。

各写真が右側になるように、事前に写真のスタックを準備することをお勧めします。 このようにして、スキャナーに入れるときに時間を無駄にせず、180度回転しないようにします。

ジオメトリパラメータの測定値を調整するときは、デジタル画像が「逆さま」にならないように、オリジナルを配置する位置を観察することをお勧めします。 私の場合、写真の下部は「l」軸に沿っています。

スキャナーをXNUMXつだけ接続している場合は、-dオプションを使用しないでください。 スクリプトでは、DEV =»»です。

「xerox_mfp:libusb:001:003」では数値が変わることがあり、スクリプトを使用するたびに数値を変更する必要があります。

スクリプトをコピーするときは、ハイフンと引用符に注意してください。 ハイフン(マイナス記号)は、オプションに応じてXNUMXつまたはXNUMXつ一緒にすることができます。 引用符はキーボードのXNUMX倍であり、LibreOfficeなどの一部のワードプロセッサが付けたものではありません。

セキュリティ上の理由から、ディレクトリがすでに存在する場合、スクリプトはディレクトリを作成しません。これにより、ファイルが存在する場合でも上書きされません。 その場合は停止します。

フォトアルバムが古い場合は、髪の毛、しわ、キロが不足していても後悔しないでください。-


コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:MiguelÁngelGatón
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。

  1.   ジュニアカルデロン

    うわー! なんて良いツト!
    bashxDでこんなにたくさんのことができるとは思いませんでした
    毎日あなたはもっと学びます!
    入力をありがとう!
    私はスキャナーを持っていませんが、入手したらすぐに試してみます🙂

  2.   ルーブ

    この貢献が私のメモのデジタル化にどれほど役立つか、それが改善されることを願っています。私たちは画像マジックに依存しているので、ファイル全体をスキャンしてスキャンしたオブジェクトのサイズを検出する機能を考えています。 djvuまたはpdfに変換して、単一のファイルを作成します。 さて、私はただとりとめのないものでした。 貢献していただきありがとうございます。

  3.   アドエロ

    共有していただきありがとうございます。