PHP实现图片马赛克(打码)
原创
52cxy
11-24 08:58
阅读数:405
图片实现马赛克:
/** 图片马赛克 * @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条评论