ImageMagick には、大きな画像を処理したい場合や、同じオリジナルから異なる出力を作成したい場合に、速度を最適化するのに役立ついくつかのトリックがあります。
ImageMagick の機能を利用すると、入力イメージを名前付きメモリ プログラム レジスタmpr:{name}
に一時的に保存できます。このレジスタから、後で (処理中に) ハードディスクから行うよりもはるかに高速にデータを読み取ることができます。
必要なさまざまな出力サイズを書き出す1 つのプロセスですべてのサイズ変更操作を実行します。
さらに良いニュースは、これらの両方を 1 つのコマンドに結合できることです。
したがって、すべてのコンテキスト切り替えオーバーヘッドを伴う複数のプロセスを実行する必要はありません。すべてを一度に実行してください。
次の例では、元の画像から 2 つの別々の領域をトリミングし、それらからサイズ変更されたサムネイルを作成します。これは、IM が 1 つのコマンドラインで実行できるさまざまな操作の数を示すためです。もちろん、要求したサイズも出力します。(もちろん、トリミング パラメータを機能させるには、非常に大きなサイズの入力画像が必要です)。
convert \
huge-original.jpg \
-quality 80 \
-colorspace rgb \
+profile '*' \
-filter Lanczos \
-write mpr:copy-of-huge-original \
+delete \
mpr:copy-of-huge-original -crop '3000x2000+0+480' -resize '200x125!>' -write thumb1-extract.jpg +delete \
mpr:copy-of-huge-original -crop '2000x1500+280+220' -resize '75x75!>' -write thumb2-extract.jpg +delete \
mpr:copy-of-huge-original -resize '1024x768' -write sample-1024x768.jpg +delete \
mpr:copy-of-huge-original -resize '800x600' -write sample-800x600.jpg +delete \
mpr:copy-of-huge-original -resize '400x300' -write sample-400x300.jpg +delete \
mpr:copy-of-huge-original -resize '200x150' -write sample-200x150.jpg +delete \
mpr:copy-of-huge-original -resize '163x163!>' -write sample-163x163.jpg
アップデート
私は今、@JonathanOng からの質問を見ただけです: How to stream the output to <stdout>
?
stdout へのフォーマットも JPEG にしたいと仮定すると、これを試すことができます。
convert \
huge-original.jpg \
-quality 80 \
-colorspace rgb \
+profile '*' \
-filter Lanczos \
+write mpr:copy-of-huge-original \
mpr:copy-of-huge-original -crop '3000x2000+0+480' -resize '200x125!>' +write thumb1-extract.jpg \
mpr:copy-of-huge-original -crop '2000x1500+280+220' -resize '75x75!>' +write thumb2-extract.jpg \
mpr:copy-of-huge-original -resize '1024x768' +write jpeg:- \
mpr:copy-of-huge-original -resize '800x600' +write jpeg:- \
mpr:copy-of-huge-original -resize '400x300' +write jpeg:- \
mpr:copy-of-huge-original -resize '200x150' +write jpeg:- \
mpr:copy-of-huge-original -resize '163x163!>' +write jpeg:-
このようにして、各バリアントは stdout に移動します。この連続する画像の流れをどのように扱うかは、あなた次第です...
書く代わりに を-write filename +delete
使用できることに注意+write filename
してください。それは同じ効果に相当します。