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