afbeeldingvergelijker
Code (php)
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<?php
/**
* This script is made under the GNU / GPL licence
* The author's name _MUST_ stay intact
*
* @author Jason de Ridder
* @copyright Jason de Ridder
* @param string $img1
* @param string $img2
* @param string $ttf The TrueType Font locationn
*/
function compare_images($img1, $img2, $ttf) {
/* Create image */
$img1_str = file_get_contents($img1);
$img2_str = file_get_contents($img2);
$img1_res = imagecreatefromstring($img1_str);
$img2_res = imagecreatefromstring($img2_str);
if($img1_str == $img2_str) {
//return 100;
}
/* Image size */
$img1_w = imagesx($img1_res);
$img1_h = imagesy($img1_res);
$img2_w = imagesx($img2_res);
$img2_h = imagesy($img2_res);
/* set new width / height */
if($img1_w > $img2_w) {
$new_width = $img1_w;
}
else {
$new_width = $img2_w;
}
if($img1_h > $img2_h) {
$new_height = $img1_h;
}
else {
$new_height = $img2_h;
}
$tmp_img = imagecreatetruecolor($new_width, $new_height);
imagecopyresampled($tmp_img, $img1_res, 0, 0, 0, 0, $new_width, $new_height, $img1_w, $img1_h);
$img1_res = $tmp_img;
unset($tmp_img);
$tmp_img = imagecreatetruecolor($new_width, $new_height);
imagecopyresampled($tmp_img, $img2_res, 0, 0, 0, 0, $new_width, $new_height, $img2_w, $img2_h);
$img2_res = $tmp_img;
// At this point the two images are same sizes
// Now will come all the calculating
$total_points = ($new_height * $new_width) / 2;
$match_points = 0;
for($i = 0; $i < ($new_width / 2); $i++) {
for($j = 0; $j < $new_height; $j++) {
$tmp_img = imagecreatetruecolor(2, 1);
$tmp_img2 = imagecreatetruecolor(2, 1);
imagecopyresampled($tmp_img, $img1_res, 0, 0, 2 * $i, $j, 2, 1, 2, 1);
imagecopyresampled($tmp_img2, $img2_res, 0, 0, 2 * $i, $j, 2, 1, 2, 1);
imagegif($tmp_img, 'tmpImg.gif');
imagegif($tmp_img2, 'tmpImg2.gif');
$str_tmp_img = file_get_contents('tmpImg.gif');
$str_tmp_img2 = file_get_contents('tmpImg2.gif');
if($str_tmp_img == $str_tmp_img2) {
$match_points++;
}
unset($tmp_img);
unset($tmp_img2);
if(($i * $j) % 500 == 0) {
sleep(0.5);
}
}
}
$percentage = floor((100 * $match_points) / $total_points) . '%';
imagecopymerge($img1_res, $img2_res, 0, 0, 0, 0, $new_width, $new_height, 50);
$red = imagecolorallocate($img1_res, 255, 0, 0);
imagettftext($img1_res, 10, 0, 5, ($new_height / 2) - 12.5, $red, $ttf, 'Images matches for:');
imagettftext($img1_res, 20, 0, 40, ($new_height / 2) + 12.5, $red, $ttf, $percentage);
header('Content-type: image/png');
imagepng($img1_res);
}
?>
/**
* This script is made under the GNU / GPL licence
* The author's name _MUST_ stay intact
*
* @author Jason de Ridder
* @copyright Jason de Ridder
* @param string $img1
* @param string $img2
* @param string $ttf The TrueType Font locationn
*/
function compare_images($img1, $img2, $ttf) {
/* Create image */
$img1_str = file_get_contents($img1);
$img2_str = file_get_contents($img2);
$img1_res = imagecreatefromstring($img1_str);
$img2_res = imagecreatefromstring($img2_str);
if($img1_str == $img2_str) {
//return 100;
}
/* Image size */
$img1_w = imagesx($img1_res);
$img1_h = imagesy($img1_res);
$img2_w = imagesx($img2_res);
$img2_h = imagesy($img2_res);
/* set new width / height */
if($img1_w > $img2_w) {
$new_width = $img1_w;
}
else {
$new_width = $img2_w;
}
if($img1_h > $img2_h) {
$new_height = $img1_h;
}
else {
$new_height = $img2_h;
}
$tmp_img = imagecreatetruecolor($new_width, $new_height);
imagecopyresampled($tmp_img, $img1_res, 0, 0, 0, 0, $new_width, $new_height, $img1_w, $img1_h);
$img1_res = $tmp_img;
unset($tmp_img);
$tmp_img = imagecreatetruecolor($new_width, $new_height);
imagecopyresampled($tmp_img, $img2_res, 0, 0, 0, 0, $new_width, $new_height, $img2_w, $img2_h);
$img2_res = $tmp_img;
// At this point the two images are same sizes
// Now will come all the calculating
$total_points = ($new_height * $new_width) / 2;
$match_points = 0;
for($i = 0; $i < ($new_width / 2); $i++) {
for($j = 0; $j < $new_height; $j++) {
$tmp_img = imagecreatetruecolor(2, 1);
$tmp_img2 = imagecreatetruecolor(2, 1);
imagecopyresampled($tmp_img, $img1_res, 0, 0, 2 * $i, $j, 2, 1, 2, 1);
imagecopyresampled($tmp_img2, $img2_res, 0, 0, 2 * $i, $j, 2, 1, 2, 1);
imagegif($tmp_img, 'tmpImg.gif');
imagegif($tmp_img2, 'tmpImg2.gif');
$str_tmp_img = file_get_contents('tmpImg.gif');
$str_tmp_img2 = file_get_contents('tmpImg2.gif');
if($str_tmp_img == $str_tmp_img2) {
$match_points++;
}
unset($tmp_img);
unset($tmp_img2);
if(($i * $j) % 500 == 0) {
sleep(0.5);
}
}
}
$percentage = floor((100 * $match_points) / $total_points) . '%';
imagecopymerge($img1_res, $img2_res, 0, 0, 0, 0, $new_width, $new_height, 50);
$red = imagecolorallocate($img1_res, 255, 0, 0);
imagettftext($img1_res, 10, 0, 5, ($new_height / 2) - 12.5, $red, $ttf, 'Images matches for:');
imagettftext($img1_res, 20, 0, 40, ($new_height / 2) + 12.5, $red, $ttf, $percentage);
header('Content-type: image/png');
imagepng($img1_res);
}
?>