"convert.im6: 메모리 할당이 `a.svg'에 실패했습니다.", 691KB SVG 파일을 100GB RAM을 사용하여 EPS로 변환하려고 합니다.

"convert.im6: 메모리 할당이 `a.svg'에 실패했습니다.", 691KB SVG 파일을 100GB RAM을 사용하여 EPS로 변환하려고 합니다.

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를 실행하고 100GB의 RAM을 가지고 있습니다. 다른 것은 실행되지 않습니다.

무엇이 문제일까요? 파일을 사용할 수 있습니다여기.

답변1

나는 ImageMagick이 SVG를 EPS로 변환할 때 사용하고 싶은 도구라고 생각하지 않습니다. 두 형식 모두 벡터 형식이지만 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 버전을 사용하는 경우 두 배의 메모리가 필요합니다.

다른 도구가 필요함에도 불구하고 여전히 이미지를 변환하고 싶다면 -density 옵션을 사용하여 이미지 크기를 제한할 수 있습니다. 다음 명령은 이미지에 대해 1200x1200 크기의 PNG를 생성합니다.

convert -density 6 a.svg a.png

관련 정보