• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP如何实现生成模糊图片

php 搞代码 4年前 (2022-01-22) 47次浏览 已收录 0个评论

本文主要介绍了PHP实现生成模糊图片的方法,涉及php高斯算法实现图片模糊功能相关实现技巧,需要的朋友可以参考下,希望能帮助到大家。

<?phpclass image_blur{/**  * 图片高斯模糊(适用于png/jpg/gif格式)  * @param $srcImg 原图片  * @param $savepath 保存路径  * @param $savename 保存名字  * @param $positon 模糊程度  *  *基于Martijn Frazer代码的扩充, 感谢 Martijn Frazer  */ public function gaussian_blur($srcImg,$savepath=null,$savename=null,$blurFactor=3){  $gdImageResource=$this->image_create_from_ext($srcImg);  $srcImgObj=$this->blur($gdImageResource,$blurFactor);  $temp = pathinfo($srcImg);  $name = $temp['basename'];  $path = $temp['dirname'];  $exte = $temp['extension'];  $savename = $savename ? $savename : $name;  $savepath = $savepath ? $savepath : $path;  $savefile = $savepath .'/'. $savename;  $srcinfo = @getimagesize($srcImg);  switch ($srcinfo[2]) {   case 1: imagegif($srcImgObj, $savefile); break;   case 2: imagejpeg($srcImgObj, $savefile); break;   case 3: imagepng($srcImgObj, $savefile); break;   default: return '保存失败'; //保存失败  }  return $savefile;  imagedestroy($srcImgObj); } /** * Strong Blur * * @param $gdImageResource 图片资源 * @param $blurFactor   可选择的模糊程度 * 可选择的模糊程度 0使用 3默认 超过5时 极其模糊 * @return GD image 图片资源类型 * @author Martijn Frazer, idea based on http://stackoverflow.com/a/20264482 */ private function blur($gdImageResource, $blurFactor = 3) {  // blurFactor has to <mark style="color:transparent">本文来源gaodaimacom搞#^代%!码&网*</mark><pre>搞代gaodaima码

be an integer $blurFactor = round($blurFactor); $originalWidth = imagesx($gdImageResource); $originalHeight = imagesy($gdImageResource); $smallestWidth = ceil($originalWidth * pow(0.5, $blurFactor)); $smallestHeight = ceil($originalHeight * pow(0.5, $blurFactor)); // for the first run, the previous image is the original input $prevImage = $gdImageResource; $prevWidth = $originalWidth; $prevHeight = $originalHeight; // scale way down and gradually scale back up, blurring all the way for($i = 0; $i < $blurFactor; $i += 1) { // determine dimensions of next image $nextWidth = $smallestWidth * pow(2, $i); $nextHeight = $smallestHeight * pow(2, $i); // resize previous image to next size $nextImage = imagecreatetruecolor($nextWidth, $nextHeight); imagecopyresized($nextImage, $prevImage, 0, 0, 0, 0, $nextWidth, $nextHeight, $prevWidth, $prevHeight); // apply blur filter imagefilter($nextImage, IMG_FILTER_GAUSSIAN_BLUR); // now the new image becomes the previous image for the next step $prevImage = $nextImage; $prevWidth = $nextWidth; $prevHeight = $nextHeight; } // scale back to original size and blur one more time imagecopyresized($gdImageResource, $nextImage, 0, 0, 0, 0, $originalWidth, $originalHeight, $nextWidth, $nextHeight); imagefilter($gdImageResource, IMG_FILTER_GAUSSIAN_BLUR); // clean up imagedestroy($prevImage); // return result return $gdImageResource; } private function image_create_from_ext($imgfile) { $info = getimagesize($imgfile); $im = null; switch ($info[2]) { case 1: $im=imagecreatefromgif($imgfile); break; case 2: $im=imagecreatefromjpeg($imgfile); break; case 3: $im=imagecreatefrompng($imgfile); break; } return $im; }}$image_blur = new image_blur();$image_blur->gaussian_blur("./1.jpg",null,null,3);?>

原图效果:

生成模糊图片后的效果:

大家学会了吗?赶紧动手尝试一下吧。

相关推荐:

css3模糊图片_html/css_WEB-ITnose

js图片模糊切换显示特效的方法_javascript技巧

css实现的图片模糊效果_javascript技巧

以上就是PHP如何实现生成模糊图片的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP如何实现生成模糊图片

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址