Легкий способ (инструмент?) Сравнить пиксель изображения для пикселя в разных форматах?
Ну, я написал базовую бездепозитную jpeg joiner в java сейчас, но мне хотелось бы сравнить файлы, которые она производит с исходными файлами.
Я могу сравнивать только в шестнадцатеричном редакторе, знает ли кто-нибудь о простом способе, программном обеспечении или java-основе (желательно программное обеспечение, так как я не чувствую себя как-то более кодирующим сейчас!), что я могу сравнить два изображения и создать "разностная карта", где пиксели не совпадают?
Спасибо.
Ответы
Ответ 1
Спасибо за предложения.
Я сначала попытался использовать подход Gimp, который хорошо работает, за исключением случаев, когда разница между изображениями очень мала. Я не мог найти вариант "улучшения различий", чтобы сделать различия различимыми, а гистограмма также дает лишь грубое представление о различиях.
В конце я использовал ImageMagick то, что я установил некоторое время назад, и забыл обо всем. Создание разностного/сравнительного изображения так же просто, как и набрав:
compare first.jpg second.png difference.gif
в командной строке.
Все это прекрасно описано здесь.
Ответ 2
TortoiseIDiff - это бесплатный просмотрщик изображений:
http://tortoisesvn.tigris.org/TortoiseIDiff.html
Это часть TortoiseSVN, но может использоваться без Subversion.
В зависимости от вашего проекта не все файлы, находящиеся под версией Управление - текстовые файлы. Скорее всего, у вас тоже будут изображения. примеры скриншотов и диаграмм для документации/файла справки.
Для этих файлов невозможно использовать обычный инструмент для сравнения файлов, потому что они работают только с текстовыми файлами и отличаются друг от друга по очереди. Здесь где инструмент Tortoise Image Diff (TortoiseIDiff) подходит к спасение. Он может показывать два изображения бок о бок или даже показывать изображения друг над другом альфа-смесь.
Ответ 3
Вы можете сделать намного хуже, чем Perceptual Diff.
Ответ 4
Лучший подход - использовать Pix для Windows (поставляется с DirectX SDK). Поддерживает растровое изображение, PNG и Jpeg... Наслаждайтесь!
Ответ 5
Используйте редактор изображений, например Photoshop или Gimp, или что-то еще, имеющее несколько слоев. Создайте изображение, где каждое исходное изображение будет выделено в отдельном слое.
В этот момент вы можете визуально сравнивать изображения, переключая верхнюю видимость верхнего слоя и включайте.
В большинстве достойных редакторов вы также можете установить верхний уровень в режим "разности". Теперь каждое значение пикселя изображения является абсолютной разницей значений пикселей в базовых изображениях. Вы можете использовать, например. инструмент гистограммы, чтобы увидеть, идентичны ли изображения. Если они идентичны, то все значения пикселей будут равны 0.
Ответ 6
Для таких вещей мне нравится netpbm
/pbmplus
. Вы можете использовать djpeg
и pnmtoplainpnm
для преобразования каждого изображения в простой формат ASCII. Затем вы просто просматриваете оба файла и генерируете новое изображение, которое показывает, где находятся пиксели. Вы могли бы, например, вычислить эвклидовое расстояние в пространстве RGB между старыми и новыми пикселями и испустить белый пиксель для нулевой разницы, светло-серый для небольшой разницы, более темный для больших различий и т.д. Формат ASCII прост и хорошо документирован на страницах руководства, и все стандартные программы просмотра могут просматривать его напрямую.
Ответ 7
В последней версии Araxis Merge будут выполняться различия изображений (http://www.araxis.com/merge/topic_comparing_image_files.html).
К сожалению, это не бесплатное приложение, так что независимо от того, хотите ли вы заплатить за него, это еще одна вещь...
Ответ 8
Там также есть удобное веб-приложение под названием Resemble.js, которое анализирует и сравнивает пиксели пикселей по пикселям. Различные пиксели в изображениях (если есть) выделяются розовым или желтым цветом в зависимости от ваших предпочтений.