Repolode
dmtrKovalenko

dmtrKovalenko/odiff

Быстрый SIMD-оптимизированный CLI-инструмент и библиотека для Node.js: сравнивает изображения попиксельно и создаёт diff-файл.

Open source альтернатива:ImageMagick

Звёзды
3,274
Форки
118
Открытые issues
16
Последний коммит
6 дней назад

Что это?

odiff попиксельно сравнивает два изображения и может записать выделенные различия в PNG-файл. Инструмент предназначен для визуального регрессионного тестирования: скриншоты, полученные при запуске тестов, сравнивают с сохранёнными эталонами. Но odiff подойдёт для сравнения любых изображений — например, фотографий или изображений, сгенерированных ИИ.

Инструмент написан на Zig и использует для ускорения SIMD-инструкции (SSE2, AVX2, AVX512 и NEON). Он принимает изображения в форматах PNG, JPEG, WebP и TIFF, в том числе позволяет сравнивать изображения разных форматов, а также обрабатывает изображения с разной раскладкой. Среди доступных настроек — цветовые пороги, обнаружение сглаживания, исключение прямоугольных областей и вывод различающихся строк и столбцов.

Помимо отдельного бинарного файла, odiff включает Node.js API (пакет odiff-bin) с постоянным режимом работы сервера, в котором для каждого сравнения не нужно запускать отдельный процесс. Доступны интеграции с Playwright, Cypress и R, а несколько сервисов визуального тестирования используют odiff как движок сравнения.

Ключевые возможности

  • 01Сравнивает изображения в форматах PNG, JPEG, WebP и TIFF, в том числе разных форматов.
  • 02Использует SIMD-оптимизации для SSE2, AVX2, AVX512 и NEON.
  • 03Обнаруживает пиксели со сглаживанием и позволяет исключать заданные области.
  • 04Поддерживает изображения с разной раскладкой и выводит индексы различающихся строк и столбцов.
  • 05Предоставляет Node.js API и постоянный режим работы сервера.

Сценарии использования

  • Визуальное регрессионное тестирование веб-страниц в CI-пайплайнах.
  • Сравнение скриншотов из Playwright или Cypress с сохранёнными эталонами.
  • Проверка того, изменились ли сгенерированные изображения или рендеры между сборками.

Быстрый старт

  1. 1

    Установить CLI через npm

    npm install odiff-bin
  2. 2

    Посмотреть справку CLI

    odiff --help
  3. 3

    Сравнить два изображения и сохранить изображение с различиями

    odiff <IMG1 path> <IMG2 path> [DIFF output path]

Что важно знать

  • В README нет подробной информации о поддержке предсобранных бинарных файлов для Windows или Linux — сказано лишь, что они доступны для «большинства платформ».

Темы

Частые вопросы

Что такое odiff?
Быстрый SIMD-оптимизированный CLI-инструмент и библиотека для Node.js: сравнивает изображения попиксельно и создаёт diff-файл. odiff попиксельно сравнивает два изображения и может записать выделенные различия в PNG-файл. Инструмент предназначен для визуального регрессионного тестирования: скриншоты, полученные при запуске тестов, сравнивают с сохранёнными эталонами. Но odiff подойдёт для сравнения любых изображений — например, фотографий или изображений, сгенерированных ИИ.
odiff можно использовать бесплатно? Какая у него лицензия?
odiff распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
odiff всё ещё поддерживается?
Активно поддерживается. Последний коммит в odiff — 13 окт. 2026 г..
Для чего можно использовать odiff?
Визуальное регрессионное тестирование веб-страниц в CI-пайплайнах. Сравнение скриншотов из Playwright или Cypress с сохранёнными эталонами. Проверка того, изменились ли сгенерированные изображения или рендеры между сборками.
Как установить odiff?
Установить CLI через npm: npm install odiff-bin Посмотреть справку CLI: odiff --help Сравнить два изображения и сохранить изображение с различиями: odiff <IMG1 path> <IMG2 path> [DIFF output path]
Где скачать odiff?
Исходный код и инструкции по установке — на GitHub: https://github.com/dmtrKovalenko/odiff

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты