2

При использовании Inkscape для создания множества изображений с общими элементами, я стараюсь копировать первый созданный мной SVG-файл столько раз, сколько мне нужно, а затем редактировать копии. Если я повторно использую файлы в разных проектах, это может привести к копированию файла и изменению от десятков до сотен файлов.

Недавно я понял, что последние копии имеют размер от 29 до 60 МБ, значительно замедляя работу компьютера. Мои картинки очень простые, ничего, что обычно не превышало бы 1 МБ.

В качестве эксперимента я скопировал все содержимое одного из последних файлов в новый файл Inkscape. Я уверен, что я полностью скопировал содержимое файла (у меня есть только один слой, и я использовал опцию "Выбрать все"). Новый файл имеет размер 102,2 КБ. Это указывает на то, что для меня не имеет значения около 30 МБ данных на файл.

Что может быть причиной этой разницы в размерах? Есть ли способ уменьшить размер файла, не копируя содержимое в новый файл?

Я использую Inkscape 0.48.4 в Debian Unstable.

Спасибо за любой вклад, который вы могли бы предоставить!

2 ответа2

3

Похоже, что Inkscape накапливает некоторые метаданные во время работы, которые не удаляются из-за ошибки или из-за того, что вы используете некоторые методы неожиданным образом или чаще, чем ожидалось. Вы можете попытаться выяснить, что является причиной вашей проблемы, взглянув на необработанный файл SVG (в обычном текстовом редакторе или XML-редакторе Inkscape) и попытавшись разобраться в содержании.

Кроме того, если вы используете какую-то операцию довольно часто, это хорошее предположение о том, что увеличивает ваши файлы. В частности, вы должны быть осторожны со всем, что использует внешние файлы.

В общем, я знаю три способа удаления ложной информации из файлов SVG:

  • Используйте Inkscape's Vacuum Defs. Это удаляет некоторую информацию, которую Inkscape догадался, что вы, возможно, захотите использовать снова, например пользовательские градиенты.
  • Сохраните файл SVG как обычный SVG вместо Inkscape SVG. Это делает некоторые объекты (например, коннекторы объектов) преобразованными в более примитивный тип объекта, поскольку они не содержатся в стандарте SVG (см. Также здесь).
  • Напишите скрипт (например, для Sed), который удаляет любую информацию, от которой вы хотите избавиться. Поскольку SVG основаны на XML, это не так утомительно, как кажется.
0

Я полагаю, что это может быть связано с <image xlink:href=data:image/png;base64... , который, насколько мне известно, является кодировкой изображения. Недавно я работал с файлом, который состоит из простых путей и изображения; кодировка изображения длиной около 835 000 символов, а все остальное - только дополнительные 120000 символов.

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