能够去除图片四周指定色彩区域的函数,image trim。类似处理字符串的trim,只是这里是用来处理图片。
先来看看处理前的图片:1.png
处理以后的效果:2.png
可以看到,程序将1.png四周白色的区域全部去除了。
这里是全部代码:
<pre class="brush:php;"> $image = imagecreatefrompng('1.png');
imagepng(trim_image($image, imagecolorat($image, 0, 0)), '2.png');
/**
* trim一张图片
* @param $image 图片对象
* @param $color 需要去掉的颜色值
*/
function trim_image($image, $color){
$mx = imagesx($image);
$my = imagesy($image);
for($x=0;$x<$mx;++$x){
for($y=0;$y<$my;++$y){
if(imagecolorat($image,$x,$y)!=$color){
$minx = $x;
break 2;
}
}
}
if($minx==0){
return null;
}
for($x=$mx-1;$x>$minx;--$x){
for($y=0;$y<$my;++$y){
if(imagecolorat($image,$x,$y)!=$color){
$maxx = $x+1;
break 2;
}
}
}
for($y=0;$y<$my;++$y){
for($x=$minx;$x<$maxx;++$x){
if(imagecolorat($image,$x,$y)!=$color){
$miny = $y;
break 2;
}
}
}
for($y=$my-1;$y>$miny;--$y){
for($x=$minx;$x<$maxx;++$x){
if(imagecolorat($image,$x,$y)!=$color){
$maxy = $y+1;
break 2;
}
}
}
$image2 = imagecreatetruecolor($maxx-$minx,$maxy-$miny);
imagecopy($image2,$image,0,0,$minx,$miny,$maxx-$minx,$maxy-$miny);
return $image2;
}
```
php trim 图片处理 imagesx imagesy imagecolorat imagecreatetruecolor