图片Trim方法,去除图像四周指定颜色的区域

2011-01-03 阅读 34

能够去除图片四周指定色彩区域的函数,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

更新于 2023年03月28日