Определите, являются ли изображения одинаковыми, но разных размеров - PullRequest
1 голос
/ 21 октября 2011

В настоящее время я имею дело с большим количеством изображений (более 3000), и у меня есть две копии каждого;один большой, один маленький.Проблема в том, что у меня нет никакой ссылки, чтобы сказать, какое маленькое изображение соответствует какому большому изображению.

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

TLDR / Не понял:Есть ли в PHP простой способ сравнить два одинаковых изображения, одно из которых, скажем, 200x200, а другое, скажем, 500x500, и определить, являются ли они изображением одной и той же вещи?

Ответы [ 7 ]

2 голосов
/ 21 октября 2011

Самый простой способ - изменить размер до небольшого размера (например, 16x16 или 32x32, в зависимости от того, сколько ЦП вы хотите использовать для отслеживания имен каждого файла на протяжении всего процесса.

Затем используйте imagecolorat () для сравнения цветов пикселей через каждую строку / столбец. Затем вы можете определить процент, который должен совпадать, чтобы считаться одним и тем же изображением.

Редактировать: вот пример этой реализации http://www.thismayhem.com/php/comparing-images-with-php-gd/

1 голос
/ 21 октября 2011

Нет, не существует функции same_image_but_in_different_sizes(), которая возвращает истину или ложь.

На вашем месте я бы либо отсортировал их вручную, либо выбрал бы подход на основе цветовой гистограммы.

Я только что увидел, что все «изображения являются файлами JPG, и они сохраняются в двух папках: большой и маленькой». Почему бы вам просто не выбросить маленький и воссоздать его, но на этот раз вы помните, что принадлежит к чему?

1 голос
/ 21 октября 2011

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

Но этот способ действительно отвратителен ...

1 голос
/ 21 октября 2011

Я бы использовал библиотеку imagemagick для изменения размера и сравнения изображений. Я бы назвал это, используя exec()

Сначала измените размер большого изображения с помощью команды convert http://www.imagemagick.org/script/convert.php

Затем сравните маленькое изображение с измененным размером, используя команду compare http://www.imagemagick.org/script/compare.php

.
0 голосов
/ 21 октября 2011

Пожалуйста, проверьте эту ссылку: Сравнить 2 изображения в php

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

0 голосов
/ 21 октября 2011

для сортировки вручную займет у вас намного больше времени.

0 голосов
/ 21 октября 2011

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

Если это так, то ваше решение состоит в пакетном режимеизмените размер больших изображений в файл tmp и md5 создаст массив bigimagemd5s, а затем создайте md5 меньших.

Этот метод будет работать только в том случае, если маленькие изображения были созданы с использованием алгоритма php GD и у вастот же уровень сжатия и размер, который использовался ранее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...