1pppp

Untitled

Sep 6th, 2020
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.40 KB | None | 0 0
  1. //Генерация ключа-изображения
  2. function getimageid($image)
  3. {
  4. //Размеры исходного изображения
  5. $size=getimagesize($image);
  6.  
  7. //Исходное изображение
  8. $image=imagecreatefrompng($image);
  9.  
  10. //Маска
  11. $zone=imagecreate(20,20);
  12.  
  13. //Копируем изображение в маску
  14. imagecopyresized($zone,$image,0,0,0,0,20,20,$size[0],$size[1]);
  15.  
  16. //Будущая маска
  17. $colormap=array();
  18.  
  19. //Базовый цвет изображения
  20. $average=0;
  21.  
  22. //Результат
  23. $result=array();
  24.  
  25. //Заполняем маску и вычисляем базовый цвет
  26. for($x=0;$x<20;$x++)
  27. for($y=0;$y<20;$y++)
  28. {
  29. $color=imagecolorat($zone,$x,$y);
  30. $color=imagecolorsforindex($zone,$color);
  31.  
  32. //Вычисление яркости было подсказано хабраюзером Ryotsuke
  33. $colormap[$x][$y]= 0.212671 * $color['red'] + 0.715160 * $color['green'] + 0.072169 * $color['blue'];
  34.  
  35. $average += $colormap[$x][$y];
  36. }
  37.  
  38. //Базовый цвет
  39. $average /= 400;
  40.  
  41. //Генерируем ключ строку
  42. for($x=0;$x<20;$x++)
  43. for($y=0;$y<20;$y++)
  44. $result[]=($x<10?$x:chr($x+97)).($y<10?$y:chr($y+97)).round(2*$colormap[$x][$y]/$average);
  45.  
  46. //Возвращаем ключ
  47. return join(' ',$result);
  48. }
  49.  
  50. * This source code was highlighted with Source Code Highlighter.
  51.  
  52.  
  53. //Вычисление "похожести" двух изображений
  54. function imagediff($image,$desc)
  55. {
  56. $image=explode(' ',$image);
  57. $desc=explode(' ',$desc);
  58.  
  59. $result=0;
  60.  
  61. foreach($image as $bit)
  62. if(in_array($bit,$desc))
  63. $result++;
  64.  
  65. return $result/((count($image)+count($desc))/2);
  66. }
  67.  
  68. * This source code was highlighted with Source Code Highlighter.
  69.  
  70.  
  71. *функция подсчета схожести примерная — лучше данное действие выполнять на стороне базы.
  72.  
  73. Примеры
  74.  
  75. image
  76. На удивление, 95% 87% схожести (с добавлением UPD-2)
  77.  
  78. image
  79. 52% схожести
  80.  
  81. image
  82. 28% схожести
  83.  
  84. image
  85. 100% схожести
Advertisement
Add Comment
Please, Sign In to add comment