280個のpgnファイルがあり、それらをマージして1つのpdfに変換します。
PNGファイル名はp000.png、p001.pngなどのシーケンスであり、合計スペースは約30MBです。
やった:
convert p00*.png to myfile.pdf
そしてそれはうまくいきました。幸運にも正しい順序で。
しかし、私がするとき:
conver p*.png to myfile.pdf
4GBのメモリとスワップの半分をすべて消費します。その後、エラーでクラッシュします
convert: memory allocation failed `myfile.pdf' @ error/pdf.c/WritePDFImage/1595.
この問題を回避する方法はありますか?
十分な解決策は、同じ名前のconvert
を一度に1ファイルずつpdfに使用することだと思います。次に、pdfunite
またはpdftk
を使用してそれらをマージします。しかし、convert
をこのように使用する方法がわかりません。
Imagemagickはメモリ使用量が非常に多いようです。 -limitを使用して、convertが使用するメモリサイズを制限することをお勧めします。必要に応じてディスクキャッシュを使用する必要があります。ここで説明を読んでください:
http://www.imagemagick.org/pipermail/magick-users/2002-March/001285.html
-limitオプションの使用方法は次のとおりです。 http://www.imagemagick.org/script/command-line-options.php#limit
そうでない場合は、説明どおりに各イメージを個別に変換し、他のツールとマージできます。何かのようなもの
for name in p*.png; do convert $name `basename $name .png`.pdf; done
それを行う必要があります。
基本的に、すべてのpngファイルを反復処理し、変換を実行します。唯一の魔法はbasename $name .png
部分で、ファイル名から.png部分を除いたものに置き換えられます。ファイル名は理にかなっています。
自分で試してみて、basenameが何をするのか感じてください。
basename something.png .png
echo `basename something.png .png`.pdf