"convert.im6: Error en la asignación de memoria `a.svg'", al intentar convertir un archivo SVG de 691 KB a EPS con 100 GB de RAM

"convert.im6: Error en la asignación de memoria `a.svg'", al intentar convertir un archivo SVG de 691 KB a EPS con 100 GB de RAM

Intenté convertir un archivo SVG de 691 KB en EPS conImagenMagiausando el comando convert a.svg a.eps, pero aparece un memory allocation failedmensaje de error:

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.

Mi computadora ejecuta Ubuntu 14.04 x64 y tiene 100 GB de RAM. No se ejecuta nada más en él.

¿Cual podría ser el problema? El archivo esta disponibleaquí.

Respuesta1

No creo que ImageMagick sea la herramienta que quieras usar cuando quieras convertir un SVG a EPS. Ambos formatos son formatos vectoriales, pero ImageMagick convertirá el archivo SVG en una imagen rasterizada.

La razón por la que tu conversión falla es porque tu imagen tiene un lienzo ridículamente grande. El ancho y el alto son 216000 puntos, que son 288000 píxeles según algunos convertidores en línea. Supongamos que está utilizando la versión Q8 de ImageMagick. Para convertir la imagen vectorial en una imagen rasterizada necesitará la siguiente cantidad de bits: 288000 (width) * 288000 (height) * 8 (bits per channel) * 3 (number of channels) = 1.990656e+12que es 248.8 GB. Y es por eso que ImageMagick no puede asignar su imagen. Cuando utilice la versión Q16 de ImageMagick, necesitará el doble de esa cantidad de memoria.

Si aún desea convertir la imagen aunque probablemente necesite otra herramienta, puede limitar el tamaño de su imagen con la opción -densidad. El siguiente comando creará un PNG de 1200x1200 para su imagen:

convert -density 6 a.svg a.png

información relacionada