Выпущена программа SVG Cleaner для оптимизации файлов SVG

Если вы достаточно активно пользуетесь Inkscape, то знаете, что неиспользуемые элементы имеют тенденцию накапливаться и раздувать размер файлов SVG. С этим вам поможет справиться недавно выпущенная новая программа SVG Cleaner 0.2.

По сути программа делает две вещи:

  • удаляет элементы и атрибуты, не участвующие в конечном изображении;
  • приводит задействованные элементы и атрибуты к более компактному виду.

В принципе, в Inkscape уже есть команда очистки определений, доступная в меню «Файл», плюс начиная с версии 0.47 имеется фильтр оптимизированного сохранения SVG, использующий сценарий Scour. Но SVG Cleaner предоставляет гораздо более богатый выбор параметров оптимизации и позволяет выполнять пакетную обработку.

Ну и кроме того, очистка всё равно нужна при работе с файлами SVG, созданными Adobe Illustrator и Corel DRAW (с первыми Inkscape кое-как справляется при помощи встроенного фильтра).

У программы достаточно простой интерфейс, поэтому чтобы не загромождать новость кучей скриншотов и занудными описаниями от Капитана Очевидность, мы записали короткий демонстрационный ролик:

В основе программы лежит сценарий на Perl, написанный Андреем Байраком. Графический интерфейс (Qt4) к программе сделал Евгений Райзнер. Редакция линуксграфикса немножечко попытала Андрея.

Какую именно проблему вы с Евгением пытаетесь решить с помощью этого приложения?

Основной целью SVG Cleaner является полная автоматизация, а также визуализация процесса чистки и оптимизации файлов SVG. Это позволяет избавить пользователей от необходимости проведения достаточно большого количества рутинных операций.

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

Откуда взялась идея написать такую программу?

Идея создания проекта SVG Cleaner появилась у меня достаточно давно (примерно два года назад), когда в один прекрасный момент возникла необходимость почистить целую кучу файлов SVG.

Выбор каталогов и параметров обработки

Поиск показал, что специализированных программ для осуществления данной операции в пакетном режиме не существует, а наиболее функциональной утилитой для чистки файлов SVG является скрипт Scour, который к тому времени уже был «вшит» в Inkscape.

Почему вы не сдалали программу на основе уже существующего сценария Scour?

При всем уважении к Джеффу Шиллеру, который проделал огромную и полезную работу, практика показала, что Scour присущ ряд недостатков:

  • не может самостоятельно работать в пакетном режиме;
  • имеет очень мало опций чистки и оптимизации, которые может непосредственно задавать пользователь;
  • в ряде случаев Scour может существенно искажать как отдельные графические элементы, так и всё изображение в целом;
  • очень медленно обрабатывает некоторые файлы, особенно имеющие большой размер.

Что касается последнего момента, могу подкрепить этот тезис примером. Скажем, вот этот файл SVG размером 1,1 МиБ на Pentium4 3GHz Scour 0.26 обрабатывал аж 3m18.446s и очистил до 533КиБ, в то время как готовящийся к релизу SVG Cleaner 0.3 — всего за 0m13.665s, причем очистил до 377.5КиБ.

В силу указанных причин я отказался от идеи брать за основу Scour, тем более Python вызывает у меня стойкое неприятие из-за своего «куртуазно-маньеристского» синтаксиса. Словом, я решил писать свой скрипт на более понятном для меня Perl, а также разрабатывать и использовать собственные алгоритмы чистки и оптимизации.

Параметры чистки элементов

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

Чему вы уделяете наибольшее внимание при разработке программы?

Основной упор в SVG Cleaner делается на сохранение идентичности изображения обработанных файлов своим оригиналам, а также на достижение максимального быстродействия операций чистки и оптимизации.

Каковы ближайшие планы?

В ближайшие планы развития SVG Cleaner входят:

  • достижение всех функциональных возможностей Scour, особенно в части оптимизации данных путей;
  • дальнейшая разработка собственных алгоритмов чистки и оптимизации, направленных на ещё более существенное уменьшение размеров файлов SVG;
  • улучшение информативности и наглядности графического интерфейса;
  • разработка справочной документации.

По большому счету, версия 0.2 — это всего лишь бета, поэтому не исключены разного рода ошибки. Но нам уже надоело вариться в собственном соку. Мы хотим услышать мнения и пожелания как можно более широкого круга пользователей, поскольку уверены что это весьма позитивно отразится на дальнейшем развитии программы.

Статистика для каждый пары до/после

SVG Cleaner доступен в виде исходного кода в репозитории Bazaar на Launchpad и в PPA для Ubuntu. Сборки для Windows и Mac пока что отсутствуют.

1 Trackback / Pingback

  1. SVG Cleaner стал быстрее и научился удалять элементы MS Visio | digilinux

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*


Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.