ImageMagick: Как сравнить исходный PNG с JPEG с потерями? - PullRequest
3 голосов
/ 20 мая 2011

Я хочу сравнить исходное изображение PNG с изображением JPEG с потерями, чтобы увидеть, сколько я теряю.Я обнаружил, что могу использовать ImageMagic для сравнения изображений.Я предпочитаю использовать Java (im4java).Я очень запутался с их документацией (http://www.imagemagick.org/script/compare.php). Она не описывает, для какой платформы она предназначена. Как я могу использовать эти командные строки и доступны ли они даже в im4java? Если кто-то может написать шаги по использованию, я буду признателенэто.

Ответы [ 3 ]

1 голос
/ 21 мая 2011

Так почему же вы не можете использовать инструмент командной строки ImageMagick напрямую?

Обратите внимание, что сравнение двух разных изображений с помощью compare приводит только к значимым результатам, если оба имеют одинаковые размеры (ширина х высота) в пикселях. compare делает сравнение, которое делается попиксельно.

Вот как бы я это сделал:

 compare \
       -verbose \
       -debug coder \
       -log "%u %m:%l %e" \
        orig1.png \
        orig2.jpeg \
       -compose src \
        diff.png

Эта команда принимает на вход 2 изображения: orig1.png и orig2.jpeg. Это производит diff.png как вывод. Он также дает некоторую информацию об отладке stdout . Выходное изображение имеет все пиксели, окрашенные в красный цвет, которые различаются между входами.

Другая возможность - это модифицированная команда:

 compare \
       -verbose \
       -debug coder \
       -log "%u %m:%l %e" \
        orig1.png \
        orig2.jpeg \
       -compose difference \
        diff.png

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

 compare \
       -verbose \
       -debug coder \
       -log "%u %m:%l %e" \
        orig1.png \
        orig2.jpeg \
       -compose difference \
        x:
1 голос
/ 20 мая 2011

ImageMagick работает на многих платформах. Если вы нажмете Binary Releases , у них появится список доступных пакетов. Библиотека im4java, как описывает ее домашняя страница, вызывает инструменты командной строки ImageMagick, чтобы выполнять свою работу, поэтому она будет работать на любой платформе, которая поддерживает как ImageMagick, так и Java. Просматривая документацию API , похоже, что команда compare недоступна в im4java, поэтому вы должны изменить im4java для ее поддержки.

0 голосов
/ 31 июля 2011

Моя запись в блоге больше о качестве JPEG и чем отличаются ImageMagick и Lightroom , но вы можете найти полезную командную строку, которая выполняет необходимое сравнение:

composite image1.ext image2.ext -compose difference diff.png

Убедитесь, что вы используете .png (или .gif или другой формат без потерь) в качестве выходного изображения, потому что в первую очередь вас интересует разница, а .jpg искажает его как фотографию.

...