我编写的这个函数将比较两张($start-$finish)图像,并更改“finish”图像中颜色不同的像素
然后将这两张图像并排显示在一张图像中
另一个功能是“display”,它将回显文本
“50% on
50% off” - 像素计数(如果数字小于 1,则将进入一位小数计数)
或者键入“2”将是
“10023 on
3000 off” - 像素计数
最后一个功能是“color”
您在数组中定义它
$color = array("r" => "244","g" => "122","b" => "100");
为了完成描述,我将展示此函数的“映射”
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<br>". $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;
}
}
?>