Я попытался преобразовать файл 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
Я не думаю, что ImageMagick — это тот инструмент, который вам нужен, когда вы хотите преобразовать SVG в EPS. Оба формата являются векторными, но ImageMagick преобразует файл SVG в растровое изображение.
Причина, по которой ваше преобразование не удается, заключается в том, что у вашего изображения нелепо большой холст. Ширина и высота составляют 216000 точек, что составляет 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