多数(約5200)の画像ファイル(PPM形式、それぞれ5 MBのサイズ)のサイズを変更し、を使用してPNG形式で保存したいと思いますconvert
。
短縮版:
convert
convert
画像ファイルを連続して処理するように指示する構文を使用していますが、24GBのメモリを消費します。
ロングバージョン:
25 GBを超える画像データに関しては、すべてのファイルを同時に処理するべきではないと思います。画像ファイルを連続して処理する方法についてImageMagickのドキュメントを検索したところ、次のことがわかりました。
読み取った各画像のサイズを変更する方が高速で、リソースをあまり消費しません。
$ convert '*.jpg[120x120]' thumbnail%03d.png
たとえば...の代わりに
montage '*.tiff' -geometry 100x100+5+5 -frame 4 index.jpg
最初にすべてのtiffファイルを読み取り、次にそれらのサイズを変更します。代わりに行うことができます...
montage '*.tiff[100x100]' -geometry 100x100+5+5 -frame 4 index.jpg
これにより、次の画像に進む前に、各画像が読み込まれ、サイズが変更されます。その結果、メモリ使用量がはるかに少なくなり、メモリ制限に達したときにディスクのスワッピング(スラッシング)が防止される可能性があります。
したがって、これは私がしていることです:
$ convert '*.ppm[1280x1280]' pngs/%05d.png
ドキュメントによると、各画像ファイルを1つずつ処理する必要があります:読み取り、サイズ変更、書き込み。これは、12個の実際のコアと24GBのRAMを搭載したマシンで実行しています。ただし、最初の2分間で、convert
プロセスのメモリ使用量は約96%に増加します。それはしばらくそこにとどまります。CPU使用率は最大です。もう少し長くなり、プロセスは終了します。
殺された
この時点では、出力ファイルは作成されていません。私はUbuntu10.04を使用していて、次のようにconvert --version
言っています。
Version: ImageMagick 6.5.7-8 2012-08-17 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2009 ImageMagick Studio LLC
Features: OpenMP
convert
変換を開始する前にすべてのデータを読み取ろうとしているようです。したがって、にバグがあるかconvert
、ドキュメントに問題があるか、ドキュメントを正しく読んでいませんでした。
なにが問題ですか?この多数の画像ファイルのサイズを変更しながら、メモリ使用量を少なくするにはどうすればよいですか?
ところで:簡単な解決策は、シェルを使用してファイルをループし、ファイルconvert
ごとに個別に呼び出すことです。しかし、私は純粋なImageMagickで同じことを達成する方法を理解したいと思います。
ありがとう!