Подтвердить что ты не робот

ImageMagick png to svg Размер изображения

Я успешно преобразовал PNG в SVG, используя следующую команду:

convert Slide3.png Slide3_converted.svg

Проблема заключается в том, что полученный файл имеет колоссальный 380 МБ!

Я пробовал эту версию команды:

convert -size 2000x1200 Slide3.png Slide3_converted_smaller.svg

Но не кубики. Тот же размер.

4b9b3361

Ответ 1

SVG - это формат векторного изображения, поэтому преобразование растрового изображения (jpg, png, gif и т.д.) в svg может быть сложной задачей.

Я попытался преобразовать простое изображение: белый фон с красным кружком и синим квадратом, используя:

convert input.png output.svg

здесь образец из файла svg, созданного этой командой:

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg width="800" height="600">
  <circle cx="0" cy="0" r="1" fill="white"/>
  <circle cx="1" cy="0" r="1" fill="white"/>
  ...
  <circle cx="218" cy="151" r="1" fill="rgb(255,247,247)"/>
  <circle cx="219" cy="151" r="1" fill="rgb(255,40,40)"/>
  <circle cx="220" cy="151" r="1" fill="red"/>
  <circle cx="221" cy="151" r="1" fill="rgb(255,127,127)"/>
  <circle cx="222" cy="151" r="1" fill="white"/>
  <circle cx="223" cy="151" r="1" fill="white"/>
  ...
  <circle cx="799" cy="599" r="1" fill="white"/>
</svg>

в основном ImageMagick создал круг радиуса 1px для каждого пикселя, покрасив его в правильный цвет. Начиная с 5KB png, мой выход был 22 МБ svg, это объясняет огромный размер файла, который вы получили.

В соответствии с документацией ImageMagick (см. здесь) это происходит, потому что " AutoTrace" (см. здесь) отсутствует библиотека:

"Если библиотека" AutoTrace "не установлена ​​и не скомпилирована в IM, то генерируемый SVG-вывод будет представлять собой огромное количество одиночных пикселей круги, генерируя двоичный результат, , а не гладкий SVG, обозначенный изображение. Такие снимки огромны при сравнении и часто занимают очень много времени время рендеринга SVG render."

После установки библиотеки AutoTrace вы можете попробовать что-то вроде этого:

convert autotrace:A.gif  A_traced.png