私は現在、Bash 用のシェルスクリプトを作成しています。これは、大量の大きな画像に対して異なるサイズのサムネイルを作成します。
GM/IM で 1 回の実行で複数のサイズのサムを作成し、同じ画像を何度も読み込んで異なるサムネイルを作成することを回避し、スクリプトの実行時にメモリと時間を節約できるかどうか疑問に思っていました。
私は現在、Bash 用のシェルスクリプトを作成しています。これは、大量の大きな画像に対して異なるサイズのサムネイルを作成します。
GM/IM で 1 回の実行で複数のサイズのサムを作成し、同じ画像を何度も読み込んで異なるサムネイルを作成することを回避し、スクリプトの実行時にメモリと時間を節約できるかどうか疑問に思っていました。
この投稿によると、GraphicsMagick を使用-write filename
して、「現在の画像を指定されたファイル名に書き込み、処理を続行して、元の画像を 1 回だけ読み取りながら、さまざまな小さいサイズを生成する」ことができます。
ImageMagick Perl bindings、または選択した他の言語へのバインディングを使用して実行できます。
#!/usr/bin/perl
use Image::Magick;
my($image, $x);
$image = Image::Magick->new;
$x = $image->Read('sars.png');
warn "$x" if "$x";
$x = $image->Resize(geometry=>'600x600');
warn "$x" if "$x";
$x = $image->Write('x.png');
warn "$x" if "$x";
$x = $image->Resize(geometry=>'400x400');
warn "$x" if "$x";
$x = $image->Write('y.png');
warn "$x" if "$x";
$x = $image->Resize(geometry=>'100x100');
warn "$x" if "$x";
$x = $image->Write('z.png');
warn "$x" if "$x";
conjureコマンドは XML 形式の Magick Scripting Language をサポートしていますが、Perl 版よりも目が疲れますし、Perl バインディングに関するドキュメントは間違いなく優れています。