Проверить картинку на изменения/PHP

12
D
На сайте с 14.01.2007
Offline
153
1287

иногда здесь можно получить помощь быстрее, чем на больших спец. форумах :)

создаю картинку с помощью imagecreatefrompng.

в цикле в этой картинке рисуются(или нет) всевозможные объекты.

после цикла мне надо узнать, есть что нибудь на картинке или нет.

как это можно проще всего проверить? я думал сравнить с пустой, но как тоже непонятно.

заранее спасибо.

Dreammaker
На сайте с 20.04.2006
Offline
569
#1

первое, что в голову пришло это сравнивать контрольные суммы полученные с помощью http://php.net/crc32

Насколько это будет ресурсоёмко и получится ли вообще (всё-таки функция для строк) я не знаю. Но сам бы начал танцевать где-то от этого :)

p.s. или http://php.net/md5

D
На сайте с 14.01.2007
Offline
153
#2
Dreammaker:
первое, что в голову пришло это сравнивать контрольные суммы полученные с помощью http://php.net/crc32

Насколько это будет ресурсоёмко и получится ли вообще (всё-таки функция для строк) я не знаю. Но сам бы начал танцевать где-то от этого

p.s. или http://php.net/md5

тоже думал в эту сторону, но они работают только со стрингами, а у меня "ресурсы"

получаю вот эту ошибку:


Warning: md5() expects parameter 1 to be string, resource given in C:\xampp\htdocs\db.php on line 268
edogs software
На сайте с 15.12.2005
Offline
775
#3

Э, может быть не поняли задачу, но...

$flag=0;

в цикле если объект рисуете - $flag=1; выставили.

В конце проверили значение флага:)

Или Вы имеете ввиду, что отрисовка объекта на картинке не обязательно изменит её? Тогда Dreammaker прав по поводу метода сравнения - результат сохраните в файл imagepng и сравнить сначала размер файла, а если совпадет, тогда md5_file.

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
Shtogrin
На сайте с 02.11.2006
Offline
95
#4

Dreammaker, сохранять во временные файлы и тогда md5_file.

В лоб, сравнивать цвет для каждой точки (imagecolorat). Но будут большие циклы, наверно 1 способ будет быстрее

www.shtogrin.com (http://www.shtogrin.com/). Канцтовары (http://www.invit.com.ua/). 1С Бухгалтерия (http://account.kiev.ua/).
dkameleon
На сайте с 09.12.2005
Offline
386
#5

Попробуйте просто получать

imagecolorstotal.

Для монотонной пустой картинки естессна должно быть мало :)

для порисованной - больше.

Дизайн интерьера (http://balabukha.com/)
grey109
На сайте с 15.06.2005
Offline
180
#6
в цикле в этой картинке рисуются(или нет) всевозможные объекты.
после цикла мне надо узнать, есть что нибудь на картинке или нет.

Тут не совсем ясно... Может стоит рисовать наверняка, чтобы не возникало лишних проверок?

тоже думал в эту сторону, но они работают только со стрингами, а у меня "ресурсы" получаю вот эту ошибку

Как вариант, сохранить во временный файл и уже потом md5_file().

D
На сайте с 14.01.2007
Offline
153
#7
edogs:
в цикле если объект рисуете - $flag=1; выставили.

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

Shtogrin:
сохранять во временные файлы и тогда md5_file.

картинок много и я хотел их сократить и уменьшить кол-во обращений к харду

dkameleon:
Попробуйте просто получать
imagecolorstotal.

а вот это похоже то что надо :) спасибо :)

П.С. я всегда знал, что этот форум - лучший :D

D
На сайте с 14.01.2007
Offline
153
#8

похоже я рано обрадовался. не важно, сколько на картинке нарисовано, функция всё равно отдаёт 0

Shtogrin
На сайте с 02.11.2006
Offline
95
#9

0 for truecolor images

dkameleon
На сайте с 09.12.2005
Offline
386
#10
Dinozavr:
похоже я рано обрадовался. не важно, сколько на картинке нарисовано, функция всё равно отдаёт 0

действительно. для труколорных отдаёт ноль :(

я и забыл, что в них нет палитры...

Если это в оригинале пустая одноцветная картинка, то можно пройтись по ней как по матрице и сравнивать просто соседние цвета до первого несовпадения.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий