Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Генерация ключа-изображения
- function getimageid($image)
- {
- //Размеры исходного изображения
- $size=getimagesize($image);
- //Исходное изображение
- $image=imagecreatefrompng($image);
- //Маска
- $zone=imagecreate(20,20);
- //Копируем изображение в маску
- imagecopyresized($zone,$image,0,0,0,0,20,20,$size[0],$size[1]);
- //Будущая маска
- $colormap=array();
- //Базовый цвет изображения
- $average=0;
- //Результат
- $result=array();
- //Заполняем маску и вычисляем базовый цвет
- for($x=0;$x<20;$x++)
- for($y=0;$y<20;$y++)
- {
- $color=imagecolorat($zone,$x,$y);
- $color=imagecolorsforindex($zone,$color);
- //Вычисление яркости было подсказано хабраюзером Ryotsuke
- $colormap[$x][$y]= 0.212671 * $color['red'] + 0.715160 * $color['green'] + 0.072169 * $color['blue'];
- $average += $colormap[$x][$y];
- }
- //Базовый цвет
- $average /= 400;
- //Генерируем ключ строку
- for($x=0;$x<20;$x++)
- for($y=0;$y<20;$y++)
- $result[]=($x<10?$x:chr($x+97)).($y<10?$y:chr($y+97)).round(2*$colormap[$x][$y]/$average);
- //Возвращаем ключ
- return join(' ',$result);
- }
- * This source code was highlighted with Source Code Highlighter.
- //Вычисление "похожести" двух изображений
- function imagediff($image,$desc)
- {
- $image=explode(' ',$image);
- $desc=explode(' ',$desc);
- $result=0;
- foreach($image as $bit)
- if(in_array($bit,$desc))
- $result++;
- return $result/((count($image)+count($desc))/2);
- }
- * This source code was highlighted with Source Code Highlighter.
- *функция подсчета схожести примерная — лучше данное действие выполнять на стороне базы.
- Примеры
- image
- На удивление, 95% 87% схожести (с добавлением UPD-2)
- image
- 52% схожести
- image
- 28% схожести
- image
- 100% схожести
Advertisement
Add Comment
Please, Sign In to add comment