1

Я попытался преобразовать файл SVG размером 691 КБ в EPS с помощью ImageMagick с помощью команды 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 ГБ оперативной памяти. Ничего другого не работает на этом.

В чем может быть проблема? Файл доступен здесь.

1 ответ1

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. Следующая команда создаст PNG размером 1200x1200 для вашего изображения:

convert -density 6 a.svg a.png

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .