convert コマンドを使っていて、パフォーマンスを考えるとファイルを介さずパイプを使いたい、という場合が多々あります。
こういう場合、ハイフン “-” を入出力ファイル名として指定することでそれぞれ標準入力、標準出力を使うという意味になります。
標準入力から画像を読み取る(STDIN):
cat foo.jpeg | convert – -resize 320×320 out.bmp
結果を標準出力に書き出す(STDOUT):
convert foo.jpeg -resize 320×320 – | cat > out.jpg
なお、標準入力を使う場合はこのままでも自動判別してくれるのでよいのですが、標準出力を使う場合はファイル指定する時と違い、拡張子による出力判別ができないため、デフォルトの動作はソースの形式と同じ形式で出力になってしまいます。
こういう場合に役立つ方法として、ファイル名の接頭語による画像形式指定があります。
たとえば /tmp/foo というファイルを明示的に GIF として読み込み、PNG として標準出力に出力する場合は以下のようにします。
convert gif:/tmp/foo png:-
参考:
– ImageMagick: Command-line Processing
Standard In の項参照。