各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案

Str Tom,为分享PHP技术和解决方案,贡献一份自己的力量!
收藏本站(不迷路),每天更新好文章!
当前位置:首页 > CMS教程 > PHP

PHP实现生成模糊图片的方法示例讲解

管理员 2023-09-05
PHP
124

PHP实现生成模糊图片的方法示例讲解

内容导读

收集整理的这篇技术教程文章主要介绍了PHP实现生成模糊图片的方法示例讲解,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3356字,纯文字阅读大概需要5分钟

内容图文

这篇文章主要介绍了PHP实现生成模糊图片的方法,涉及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 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);?>

原图效果:

生成模糊图片后的效果:

您可能感兴趣的文章:

Laravel 5.5基于内置的Auth模块实现前后台登陆的详解

PHP二维数组实现去除重复项的方法

Thinkphp5行为使用方法的汇总

以上就是PHP实现生成模糊图片的方法示例讲解的详细内容,更多请关注Gxl网其它相关文章!

内容总结

以上是为您收集整理的PHP实现生成模糊图片的方法示例讲解全部内容,希望文章能够帮你解决PHP实现生成模糊图片的方法示例讲解所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。

内容备注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

扫码关注

qrcode

QQ交谈

回顶部