1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/haujet-color-trace

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Цветной след

Дата обновления: 6 августа 2021 года

Это программа, которая преобразует растровые изображения в цветные векторные SVG-изображения. Это инструмент командной строки, реализованный с использованием Python-скриптов и работающий в среде Python3.8+.

✨ Эффект

На примере открытки изображение в формате PNG (370 КБ):

![Растровое изображение](assets/растровое изображение.png)

Преобразование в SVG с одним цветом (32 КБ) даёт следующий результат:

![Векторное изображение — один цвет](assets/векторное изображение - один цвет.svg)

Результат преобразования в SVG с тремя цветами (190 КБ):

![Векторное изображение — три цвета](assets/векторное изображение - три цвета.svg)

📝 Принцип работы

Принцип работы программы заключается в следующем:

  1. Изображение в формате PNG используется как промежуточный формат для уменьшения количества цветов.
  2. Изображение разделяется на слои по цвету.
  3. Каждый слой преобразуется в векторное изображение с помощью Potrace.
  4. Все полученные векторные изображения объединяются в одно цветное SVG-изображение.

🔨 Зависимости

Для реализации описанных функций необходимо установить следующие программы:

  • ImageMagick — для преобразования форматов изображений;
  • Potrace — для преобразования растровых изображений в векторные с одним цветом;
  • pngquant — для уменьшения количества цветов (используется алгоритм Median-Cut, который является алгоритмом по умолчанию);
  • pngnq — для уменьшения количества цветов (можно использовать алгоритм NeuQuant, который позволяет получить больше цветов).

Обратите внимание, что установка pngnq не обязательна. Если вы не используете этот алгоритм, то устанавливать программу не нужно. Кроме того, при установке pngnq на Windows также требуется вручную загрузить файл libpng13.dll, что может быть затруднительно. Поэтому рекомендуется не использовать эту программу.

Установка перечисленных программ означает добавление каталогов исполняемых файлов этих программ в системные переменные среды.

Python-зависимость включает библиотеку lxml. Для установки используйте pip.

👍 Использование

Инструмент представляет собой Python-скрипт, расположенный в папке src. Его можно использовать в командной строке следующим образом:

$ python color-trace.py -h
usage: color-trace.py [-h] -i src [src ...] [-o dest] [-d destdir] [-C N]
                      [--width <dim>] [--height <dim>] [-c N] [-q algorithm]
                      [-fs | -ri] [-r paletteimg] [-s] [-p size] [-D size]
                      [-S threshold] [-O tolerance] [-bg] [-v] [--version]

Использование potrace для преобразования растрового изображения в цветное векторное SVG-изображение

optional arguments:
  -h, --help, /?        показать справку
  -i src [src ...], --input src [src ...]
                        входные файлы, поддерживаются * и ? подстановочные знаки
  -o dest, --output dest
                        путь сохранения результата, поддерживается * подстановочный знак
  -d destdir, --directory destdir
                        каталог сохранения результатов
  -C N, --cores N       номер процесса для многопоточной обработки (по умолчанию используются все ядра)
  --width <dim>         ширина выходного SVG-изображения, например: 6.5in, 15cm, 100pt, по умолчанию используется дюйм
  --height <dim>        высота выходного SVG-изображения, например: 6.5in, 15cm, 100pt, по умолчанию используется дюйм
  -c N, --colors N      [если не используется -p, необходимо указать этот параметр] количество цветов перед преобразованием. Максимальное значение — 256. 0 означает пропуск уменьшения количества цветов (не рекомендуется использовать 0, если изображение уже уменьшено по количеству цветов).
  -q algorithm, --quantization algorithm
                        алгоритм уменьшения количества цветов: mc, as, или nq. 'mc' (Median-Cut, используется pngquant, создаёт меньше цветов, это значение по умолчанию); 'as' (Adaptive Spatial Subdivision, используется ImageMagick, создаёт меньшее количество цветов); 'nq' (NeuQuant, можно создать больше цветов, используется pnqng). Если --colors 0, уменьшение количества цветов не применяется.
  -fs, --floydsteinberg
                        использовать Floyd-Steinberg dithering (подходит для всех алгоритмов уменьшения количества цветов или -p/--palette). Предупреждение: любой алгоритм уменьшения количества цветов значительно увеличит размер и сложность выходного SVG-изображения
  -ri, --riemersma      использовать Rimersa dithering (только для алгоритма уменьшения количества цветов as или -p/--palette)
  -r paletteimg, --remap paletteimg
                        использовать пользовательскую палитру для уменьшения количества цветов [заменяет -c и -q]
  -s, --stack           стековое преобразование (рекомендуется для более точного вывода)
  -p size, --prescale size
                        увеличить изображение перед преобразованием для получения большего количества деталей (значение по умолчанию: 1). Например, использование 2 означает увеличение изображения вдвое перед преобразованием
  -D size, --despeckle size
                        размер сглаживания пятен (в пикселях) (значение по умолчанию: 2)
  -S threshold, --smoothcorners threshold
                        параметр сглаживания углов: 0 означает отсутствие сглаживания, 1.334 — максимальное значение (значение по умолчанию: 1.0)
  -O tolerance, --optimizepaths tolerance
                        параметр оптимизации Bézier-кривых: минимум 0, максимум 5 (значение по умолчанию: 0.2)
  -bg, --background     сделать первый цвет фоном и максимально оптимизировать окончательное SVG-изображение
  -v, --verbose         вывести детали выполнения
  --version             показать версию программы

Например:

$ python color-trace.py -i изображение.png -c 3 -o вектор.svg
$ python color-trace.py -i папка/*.png -c 3 -d папка для сохранения

🔮 Предыстория

Этот инструмент изначально был создан для преобразования некоторых отсканированных PDF-книг в формат векторного изображения. Это позволило бы использовать преимущества векторных изображений, такие как меньший размер файла и улучшенное качество при просмотре. В результате поиска было обнаружено, что Potrace, инструмент для преобразования растровых изображений в векторные, имеет отличные результаты. Многие программы и проекты используют его и его код. Единственным недостатком является то, что он поддерживает только чёрно-белые изображения.

Potrace — это инструмент для создания векторных изображений из растровых, то есть для преобразования растровых изображений (PBM, PGM, PPM или BMP) в векторные. Типичным применением является создание SVG или PDF файлов из сканированных данных, таких как корпоративные или университетские логотипы, рукописные заметки и т. д. Полученные изображения являются гладкими и могут быть представлены с любым разрешением.

В настоящее время Potrace может создавать следующие форматы выходных данных: SVG, PDF, EPS, PostScript, DXF, GeoJSON, PGM, Gimppath и XFig.

Затем я также попробовал использовать функции трассировки Adobe Illustrator и Inkscape, но они требовали ручного управления каждым изображением, а не пакетной обработки, как Potrace.

Наконец, я обнаружил Potrace на GitHub, где нашёл репозиторий с несколькими десятками звёзд. Репозиторий использует Python и Potrace для создания интересных проектов. customink реализовал color_trace на Python3.2 в 2012 году!

После прочтения readme я взволнованно скачал исходный код и попытался запустить его, но получил ошибку. В конце концов, он был написан на Python 3.2, что довольно старо, и многие встроенные функции Python сильно изменились.

Если я хотел использовать его, мне пришлось бы исправить его самостоятельно. Я не мог смотреть на исходный код на английском языке, поэтому заменил большинство комментариев и переменных на удобные для понимания переводы на китайский язык. Только так я постепенно понял принцип работы программы, а затем провёл тестирование, исправление и оптимизацию, пока она не стала пригодной для использования. Счастлив!

❤ Вклад кода

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

При написании комментариев я медленно печатал по-китайски, и многие части я делал с помощью HaujetZhao/CapsWriter, чтобы помочь с голосовым вводом. Рекомендую использовать.

Любой способный энтузиаст может разветвить этот репозиторий и перевести его на английский код.

☕ Пожертвование

Любовь всегда остаётся любовью, независимо от того, сколько вы даёте. Это программное обеспечение полностью с открытым исходным кодом, оно работает на любви. Если вы хотите, вы можете поддержать меня, сделав пожертвование:

Этот QR-код для пожертвований также был преобразован из JPG в чёрно-белый SVG-файл размером всего 55 КБ, отлично!

😀 Общение

Для обратной связи по программному обеспечению можно создавать проблемы или присоединяться к QQ-группе: 1146626791.

🙏 Благодарность

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Программа, которая преобразует растровые изображения в цветные векторные SVG-изображения, представляет собой инструмент командной строки, реализованный с помощью Python-скрипта. Для её работы требуется среда Python 3.8 или более новая версия. Развернуть Свернуть
GPL-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/haujet-color-trace.git
git@api.gitlife.ru:oschina-mirror/haujet-color-trace.git
oschina-mirror
haujet-color-trace
haujet-color-trace
master