ImageMagick
Wikipedia から:
- ImageMagick は、ラスターイメージファイルとベクターイメージファイルを表示、変換、編集するための無料のオープンソースソフトウェアスイートです。200 を超える画像ファイル形式を読み書きできます。
目次
インストール
imagemagick パッケージを インストール します。あるいは、API とコマンドラインインターフェイスの安定性を重視した ImageMagick のフォークである GraphicsMagick の graphicsmagick をインストールします。
使い方
GraphicsMagick については、ImageMagick(1) または gm(1) を参照してください。
共通操作
画像形式間の変換
この機能の基本的な使用法は、既存の希望する画像形式をファイル名拡張子として指定することです。たとえば、指定された .png 画像を .jpg にするには、次を使用します。
$ convert image.png image.jpg
追加
複数の写真を 1 つに結合する:
$ convert -append input.pngs output.png
トリミング、切り取り
複数の画像の一部を切り取って別の形式に変換するには:
$ mogrify -crop WIDTHxHEIGHT+X+Y -format jpg *.png
ここで、WIDTH と HEIGHT はトリミングされた出力画像サイズ、X と Y は入力画像サイズからのオフセットです。
また、重力を利用してそのエッジを選択し、画像から単一のエッジを切り取る -chop
こともできます。こちらの方が、数や試行錯誤が少なくて済むので簡単です。
$ magick frame_red.gif -gravity South -chop 0x10 chop_bottom.gif
ストレージサイズを制限する
特定のストレージサイズで適切な品質を達成するには、次の手順を実行します:
$ convert image.jpg -define jpeg:extent=3000KB image_small.jpg
これにより変換時間が短縮されることを期待します。-quality
に注意してください。
$ convert image.jpg -quality 85% image_small.jpg
品質とストレージサイズの相関関係が明確でない場合は、使用が難しくなります。
スクリーンショットの取得
現在のシステムのスクリーンショットを撮る簡単な方法は、import(1) コマンドを使用することです:
$ import -window root screenshot.jpg
-window
オプションを指定せずに import
を実行すると、ウィンドウまたは任意の領域を対話的に選択できます。-pause
を使用すると、たとえば一部のウィンドウを下げるなどの遅延を指定できます。
複数の X 画面のスクリーンショット
Twinview または Dualhead を実行している場合は、スクリーンショットを 2 回取得し、imagemagick
を使用してそれらを貼り付けます:
$ import -window root -display :0.0 -screen /tmp/0.png $ import -window root -display :0.1 -screen /tmp/1.png $ convert +append /tmp/0.png /tmp/1.png screenshot.png $ rm /tmp/{0,1}.png
個々の Xinerama ヘッドのスクリーンショット
Xinerama ベースのマルチヘッドセットアップには、仮想画面が 1 つだけあります。物理画面の高さが異なる場合、スクリーンショットにデッドスペースが発生します。この場合、各物理画面のスクリーンショットを個別に取得することができます。 Xinerama 情報が X サーバーから利用できる限り、以下は機能します:
#!/bin/sh xdpyinfo -ext XINERAMA | sed '/^ head #/!d;s///' | while IFS=' :x@,' read i w h x y; do import -window root -crop ${w}x$h+$x+$y head_$i.png done
アクティブ/フォーカスされたウィンドウのスクリーンショット
次のスクリプトは、現在フォーカスされているウィンドウのスクリーンショットを取得します。EWMH/NetWM 互換の X ウィンドウマネージャーで動作します。以前のスクリーンショットが上書きされないように、現在の日付がファイル名として使用されます。
#!/bin/sh activeWinLine=$(xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)") activeWinId=${activeWinLine:40} import -window "$activeWinId" /tmp/$(date +%F_%H%M%S_%N).png
あるいは、EWMH のサポートに関係なく、次のものが機能するはずです:
$ import -window "$(xdotool getwindowfocus -f)" /tmp/$(date +%F_%H%M%S_%N).png
画像データの暗号化
暗号化するには:
$ echo pass_phrase | magick image.jpg -encipher - -depth 8 png24:image.png
これは次の方法で復号化できます:
$ echo pass_phrase | magick image.png -decipher - image.jpg
このようなコマンドに関するあらゆる種類の問題や提案については、Encrypting Images のディスカッションを読むことを強くお勧めします。
cipher
タグを持つ画像形式のメタデータは、暗号化のテストに使用できます。ただし、EXIF 編集プログラムによって削除または偽装される可能性があります。
$ identify -verbose image.png
一般に、ラスターイメージが暗号化されているかどうかのテストは、ピクセルコンポーネントの分布をチェックすることで実行できます。特定のしきい値を超える場合、データはランダムであると見なされ、暗号化の候補となる可能性があります。ただし、誤検知の例としては、Diamond-square algorithm で作成された画像が挙げられます。
参照
- ImageMagick Web サイト には、サンプル および ショーケース の広範なリストが掲載されています。
- アプリケーション一覧#Image processing
- Fred's ImageMagick Scripts ImageMagic スクリプトの大規模なコレクション