
Выпущено важное обновление SVG Cleaner — программы для пакетной оптимизации векторной графики в формате SVG.
Поскольку разработчик оригинального движка на Perl покинул проект, оставшийся участник проекта, Евгений Рейзнер, переписал всё на C++. Новый движок почти полностью повторяет функциональность предыдущего. Тестирование на выборках до 20 000 файлов показывает следующие результаты:
- новая версия, в среднем, в 5—8 раз быстрее оригинала;
- потребление памяти в сравнении с v0.4 упало, как минимум, вдвое;
- появилась возможность обрабатывать большие (>20МБ) файлы SVG;
- удаётся удалять до 45% мусора;
- качество сжатия пока что хуже на 1—2%;
- вероятность обработать файл с ошибкой — 0.002%.
За счёт избавления от Perl Евгению удалось на порядок уменьшить размер инсталлятора для Windows и сделать пакет для Mac, о котором его давно просили пользователи.
Кроме того, бэкенд работает из консоли как отдельное приложение, так что SVG Cleaner можно при желании использовать на сервере. В консольном приложении пока реализованы лишь самые основные функции: папки с файлами, а также файлы SVGZ оно пока не обрабатывает.
Среди дальнейших планов:
- удаление не менее 75% мусора;
- более умная разгруппировка элементов g (сейчас группы с фильтрами, масками и прочим пропускаются).
- группировка элементов не только по полному, но и по частичному совпадению стиля (атрибут style);
- преобразование сегментов контуров, аппроксимация контуров;
- удаление одинаковых и почти одинаковых (в долях процентов) элементов;
- удаление элементов, которые перекрыты другими и не видны;
- применение всех матриц трансформаций;
- переход с QtXml на libxml2, поскольку первый тратит на разбор файлов почти треть времени работы программы;
- более удобный GUI с подробным описанием параметров очистки.
Для скачивания доступен исходный код, сборки для Windows и Mac; есть репозиторий для Ubuntu. За развитием проекта можно следить на GitHub.
Когда увидим SVG Cleaner в Inkscape?
Но зачем? В Inkscape уже есть Scour.