PHP ile resimleri Hex Koduna çevirme algoritması. Bu sayede projenize yüklenen aynı resimleri bulabilirsiniz.
Basit düzeyde görüntü işleme ve karşılaştırma için kullanabilirsiniz. Hatta veritabanına resmi işledikten sonra kaydedip daha sonra benzer resim karşılaştırması yapabilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
$filename = "resim.jpg"; if (getimagesize($filename)) { list($width, $height) = getimagesize($filename); $exploded = explode('.', $filename); $ext = $exploded[count($exploded) - 1]; if (preg_match('/jpg|jpeg/i', $ext)) { $img = imagecreatefromjpeg($filename); } else if (preg_match('/png/i', $ext)) { $img = imagecreatefrompng($filename); } else if (preg_match('/gif/i', $ext)) { $img = imagecreatefromgif($filename); } else if (preg_match('/bmp/i', $ext)) { $img = imagecreatefrombmp($filename); } else { return 0; } $new_img = imagecreatetruecolor(8, 8); imagecopyresampled($new_img, $img, 0, 0, 0, 0, 8, 8, $width, $height); imagefilter($new_img, IMG_FILTER_GRAYSCALE); $colors = array(); $sum = 0; for ($i = 0; $i < 8; $i++) { for ($j = 0; $j < 8; $j++) { $color = imagecolorat($new_img, $i, $j) & 0xff; $sum += $color; $colors[] = $color; } } $avg = $sum / 64; $hash = ''; $curr = ''; $count = 0; foreach ($colors as $color) { if ($color > $avg) { $curr .= '1'; } else { $curr .= '0'; } $count++; if (!($count % 4)) { $hash .= dechex(bindec($curr)); $curr = ''; } } $c = $hash; echo $c; } |