我创建的这个函数将比较两个(开始 - 结束)图像,并更改“结束”图像中颜色不同的像素
然后将它们并排显示在一个图像中
另一个功能是“display”,它将回显文本
“50% on
50% off” - % 计数(如果数字小于 1,它将进入一位小数计数)
或者输入“2”将是
“10023 on
3000 off” - 像素计数
最后一个功能是“color”
你在数组中定义它
$color = array("r" => "244", "g" => "122", "b" => "100");
为了结束描述,我将展示这个函数的“map”
compare($start, $finish[, $color[, $display[, $type]]])
image-url($start) - 基础图像 URL
image-url($finish) - 比较图像 URL
array($color) - 具有键“r”,“g”,“b”的数组,r 表示红色 0-255,g 表示绿色 0-255,b 表示蓝色 0-255
bool($display) - 1 或 TRUE 将返回比较的文本统计信息
int($type) - 1 或 0 | 1 为 % 结果 | 0 为像素结果
<?
function compare($start, $finish, $color, $display, $type){
$im = ImageCreateFrompng($start);
$im2 = ImageCreateFrompng($finish);
$img['x'] = imagesx($im);
$img['y'] = imagesy($im);
$img2['x'] = imagesx($im2);
$img2['y'] = imagesy($im2);
if(($img['x'] == $img2['x']) && ($img['y'] == $img2['y'])){
// 获取并设置图像高度和宽度
$i = array("width" => $img['x'] * 2, "height" => $img['y']);
$im3 = imagecreatetruecolor($i['width'], $i['height']);
if($color){
$color = imagecolorallocate($im3, $color['r'], $color['g'], $color['b']);
}else{
$color = imagecolorallocate($im3, 255, 255, 255);
}
for($y = $img['y']; $y > 0; $y--){
for($x = $img['x']; $x > 0; $x--){
if(ImageColorAt($im, $x, $y) == ImageColorAt($im2, $x, $y)){
$on = $on + 1;
$rgb = ImageColorAt($im, $x, $y);
Imagesetpixel($im3, $img['x'] + $x, $y, $rgb);
}else{
$off = $off + 1;
imagesetpixel($im3, $img['x'] + $x, $y , $color);
}
}
}
if($display == true){
if(($type == "1") || (!$type)){
$off2 = (round(($off / $on) * 10));
if(($off2 == 0) && ($off > 0)){
$off2 = round(($off / $on) * 10) * 10;
}
$on2 = (100 - $off2);
$off2 .= "%";
$on2 .= "%";
}else{
$off2 = $off;
$on2 = $on;
}
echo $off2 ." off
" . $on2 ." on";
}else{
imagecopy($im3, $im, 0, 0, 0, 0, $img['x'], $img['y']);
@header("Content-type: image/png");
imagepng($im3);
imagedestroy($im3);
}
imagedestroy($im);
imagedestroy($im2);
return TRUE;
}else{
return False;
}
}
?>