「convert.im6: メモリ割り当てに失敗しました `a.svg'」、100 GB の RAM で 691 KB の SVG ファイルを EPS に変換しようとしています

「convert.im6: メモリ割り当てに失敗しました `a.svg'」、100 GB の RAM で 691 KB の SVG ファイルを EPS に変換しようとしています

691KBのSVGファイルをEPSに変換しようとしましたイメージマジックコマンドを使用しましたconvert a.svg a.epsが、memory allocation failedエラーメッセージが表示されます:

ubuntu@server:~$ convert a.svg a.eps
convert.im6: memory allocation failed `a.svg' @ error/svg.c/ReadSVGImage/2889.
convert.im6: no images defined `a.eps' @ error/convert.c/ConvertImageCommand/3044.

私のコンピューターは Ubuntu 14.04 x64 を実行しており、100 GB の RAM を搭載しています。他には何も実行されていません。

何が問題なのでしょうか?ファイルは利用可能ですここ

答え1

SVG を EPS に変換する場合、ImageMagick は使用すべきツールではないと思います。どちらの形式もベクター形式ですが、ImageMagick は SVG ファイルをラスター画像に変換します。

変換が失敗する理由は、画像のキャンバスが非常に大きいためです。幅と高さは 216000pt で、一部のオンライン コンバーターによると 288000 ピクセルです。ImageMagick の Q8 バージョンを使用していると仮定します。ベクター画像をラスター画像に変換するには、次のビット数が必要です。288000 (width) * 288000 (height) * 8 (bits per channel) * 3 (number of channels) = 1.990656e+12これは です248.8 GB。これが、ImageMagick が画像を割り当てることができない理由です。ImageMagick の Q16 バージョンを使用している場合は、その 2 倍のメモリ量が必要になります。

別のツールが必要になる可能性はあるものの、それでも画像を変換したい場合は、-density オプションを使用して画像のサイズを制限することができます。次のコマンドは、画像に対して 1200x1200 の PNG を作成します。

convert -density 6 a.svg a.png

関連情報