文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
php爱好者> php教程>PHP实现生成模糊图片的操作讲解

PHP实现生成模糊图片的操作讲解

时间:2020-12-29  来源:互联网

本文章主要介绍了PHP实现生成模糊图片的方法,涉及php高斯算法实现图片模糊功能相关实现技巧,有兴趣的朋友快来爱号网看看吧。

QQ浏览器截图20201229143029.png

本文实例讲述了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实现生成模糊图片的操作讲解的全部内容了,希望对你的学习有所帮助。

相关阅读更多 +
最近更新
排行榜 更多 +
元梦之星最新版手游

元梦之星最新版手游

棋牌卡牌 下载
我自为道安卓版

我自为道安卓版

角色扮演 下载
一剑斩仙

一剑斩仙

角色扮演 下载