• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    PHP实现生成模糊图片的方法示例

    本文实例讲述了PHP实现生成模糊图片的方法。分享给大家供大家参考,具体如下:

    ?php
    class 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);
    ?>
    
    

    原图效果:

    生成模糊图片后的效果:

    更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP图形与图片操作技巧汇总》、《php文件操作总结》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php面向对象程序设计入门教程》、《PHP网络编程技巧总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

    希望本文所述对大家PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • PHP基于phpqrcode类生成二维码的方法详解
    • php实现生成带二维码图片并强制下载功能
    • PHP实现可添加水印与生成缩略图的图片处理工具类
    • thinkphp5上传图片及生成缩略图公共方法(分享)
    • php生成缩略图质量较差解决方法代码示例
    • thinkPHP实现上传图片及生成缩略图功能示例
    • 使用PHP生成二维码的两种方法(带logo图像)
    • PHP生成图片验证码、点击切换实例
    • php实现上传图片生成缩略图示例
    • php生成图形验证码几种方法小结
    • PHP实现生成推广海报的方法详解
    上一篇:PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
    下一篇:Laravel 5.5基于内置的Auth模块实现前后台登陆详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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