“convert.im6:記憶體分配失敗‘a.svg’”,嘗試將 691 KB SVG 檔案轉換為具有 100 GB RAM 的 EPS

“convert.im6:記憶體分配失敗‘a.svg’”,嘗試將 691 KB SVG 檔案轉換為具有 100 GB RAM 的 EPS

我嘗試將 691 KB 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+12248.8 GB。這就是 ImageMagick 無法分配您的圖像的原因。當您使用 Q16 版本的 ImageMagick 時,您將需要兩倍的記憶體量

如果您仍然想轉換影像,即使您可能需要其他工具,您可以使用 -密度選項來限制影像的大小。以下命令將為您的映像建立一個 1200x1200 的 PNG:

convert -density 6 a.svg a.png

相關內容