PHP实现图片马赛克(打码)
原创
52cxy
11-24 08:58
阅读数:443
图片实现马赛克:
/** 图片马赛克
* @param String $src 原始图片路径
* @param Stirng $dst 生成后的图片
* @param int $x1 起点横坐标
* @param int $y1 起点纵坐标
* @param int $x2 终点横坐标
* @param int $y2 终点纵坐标
* @param int $size 打码大小,数字越大越模糊
* @return boolean
*/
function imageMosaics($src, $dst, $x1, $y1, $x2, $y2, $size){
// 推断原图是否存在
if(!file_exists($src)){
return false;
}
// 获取原图信息
list($width, $height, $type) = getimagesize($src);
// 推断区域是否超出图片
if($x1 > $width || $x1 < 0 || $x2 > $width || $x2 < 0 || $y1 > $height
|| $y1 < 0 || $y2 > $height || $y2 < 0){
return false;
}
if($type == 1) $srcImgData = imagecreatefromgif($src);
elseif($type == 2) $srcImgData = imagecreatefromjpeg($src);
elseif($type == 3) $srcImgData = imagecreatefrompng($src);
else return false;
// 打马赛克
for($i = $x1; $i < $x2; $i = $i+$size){
for($j = $y1; $j < $y2; $j = $j+$size){
$color = imagecolorat($srcImgData, $i+round($size/2), $j+round($size/2));
imagefilledrectangle($srcImgData, $i, $j, $i+$size, $j+$size, $color);
}
}
// 生成图片
if($type == 1) imagegif($srcImgData, $dst);
elseif($type == 2) imagejpeg($srcImgData, $dst);
elseif($type == 3) imagepng($srcImgData, $dst);
return is_file($dst)? true : false;
}测试代码:
$src = 'src.jpg'; $dst = 'dst.jpg'; $flag = imageMosaics($src, $dst, 0, 0, 100, 100, 4);
共0条评论