“convert.im6: alocação de memória falhou 'a.svg'”, tentando converter um arquivo SVG de 691 KB em EPS com 100 GB de RAM

1

Eu tentei converter um arquivo SVG de 691 KB em EPS com ImageMagick usando o comando convert a.svg a.eps , mas recebo uma mensagem de erro 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.

Meu computador roda o Ubuntu 14.04 x64 e tem 100 GB de RAM. Nada mais está sendo executado.

Qual poderia ser o problema? O arquivo está disponível aqui .

    
por Franck Dernoncourt 17.02.2016 / 00:53

1 resposta

1

Não acho que o ImageMagick seja a ferramenta que você deseja usar quando quiser converter um SVG em EPS. Ambos os formatos são formatos vetoriais, mas o ImageMagick converterá o arquivo SVG em uma imagem rasterizada.

A razão pela qual sua conversão falha é porque sua imagem tem uma grande tela ridícula. A largura e a altura são 216000pt, que são 288000 pixels, de acordo com alguns conversores on-line. Vamos supor que você esteja usando a versão Q8 do ImageMagick. Para converter a imagem vetorial em uma imagem raster, você precisará do seguinte número de bits: 288000 (width) * 288000 (height) * 8 (bits per channel) * 3 (number of channels) = 1.990656e+12 , que é 248.8 GB . E é por isso que o ImageMagick não consegue alocar sua imagem. Quando você está usando a versão Q16 do ImageMagick, você precisará do dobro da quantidade de memória

Se você ainda quiser converter a imagem mesmo que provavelmente precise de outra ferramenta, poderá limitar o tamanho da sua imagem com a opção -densidade. O comando a seguir criará um PNG de 1200x1200 para sua imagem:

convert -density 6 a.svg a.png

    
por 19.02.2016 / 00:00