“convert.im6:内存分配失败‘a.svg’”,尝试使用 100 GB 的 RAM 将 691 KB 的 SVG 文件转换为 EPS

“convert.im6:内存分配失败‘a.svg’”,尝试使用 100 GB 的 RAM 将 691 KB 的 SVG 文件转换为 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

我认为 ImageMagick 不是将 SVG 转换为 EPS 时要使用的工具。两种格式都是矢量格式,但 ImageMagick 会将 SVG 文件转换为光栅图像。

转换失败的原因是您的图像画布太大。根据一些在线转换器,宽度和高度为 216000pt,即 288000 像素。假设您使用的是 Q8 版本的 ImageMagick。要将矢量图像转换为光栅图像,您需要以下位数:288000 (width) * 288000 (height) * 8 (bits per channel) * 3 (number of channels) = 1.990656e+12248.8 GB。这就是 ImageMagick 无法分配您的图像的原因。当您使用 Q16 版本的 ImageMagick 时,您将需要两倍的内存量

如果您仍想转换图像(尽管您可能需要另一个工具),则可以使用 -density 选项限制图像的大小。以下命令将为您的图像创建一个 1200x1200 的 PNG:

convert -density 6 a.svg a.png

相关内容