php模糊图片 函数
2016-06-24 15:34
585 查看
<?php function blurImage($srcimg,$blur) { $blur = $blur*$blur; $blur = max(0,min(1,$blur)); $srcw = imagesx($srcimg); $srch = imagesy($srcimg); $dstimg = imagecreatetruecolor($srcw,$srch); $f1a = $blur; $f1b = 1.0 - $blur; $cr = 0; $cg = 0; $cb = 0; $nr = 0; $ng = 0; $nb = 0; $rgb = imagecolorat($srcimg,0,0); $or = ($rgb >> 16) & 0xFF; $og = ($rgb >> 8) & 0xFF; $ob = ($rgb) & 0xFF; //------------------------------------------------- // first line is a special case //------------------------------------------------- $x = $srcw; $y = $srch-1; while ($x--) { //horizontal blurren $rgb = imagecolorat($srcimg,$x,$y); $cr = ($rgb >> 16) & 0xFF; $cg = ($rgb >> 8) & 0xFF; $cb = ($rgb) & 0xFF; $nr = ($cr * $f1a) + ($or * $f1b); $ng = ($cg * $f1a) + ($og * $f1b); $nb = ($cb * $f1a) + ($ob * $f1b); $or = $nr; $og = $ng; $ob = $nb; imagesetpixel($dstimg,$x,$y,($nr << 16) | ($ng << 8) | ($nb)); } //------------------------------------------------- //------------------------------------------------- // now process the entire picture //------------------------------------------------- $y = $srch-1; while ($y--) { $rgb = imagecolorat($srcimg,0,$y); $or = ($rgb >> 16) & 0xFF; $og = ($rgb >> 8) & 0xFF; $ob = ($rgb) & 0xFF; $x = $srcw; while ($x--) { //horizontal $rgb = imagecolorat($srcimg,$x,$y); $cr = ($rgb >> 16) & 0xFF; $cg = ($rgb >> 8) & 0xFF; $cb = ($rgb) & 0xFF; $nr = ($cr * $f1a) + ($or * $f1b); $ng = ($cg * $f1a) + ($og * $f1b); $nb = ($cb * $f1a) + ($ob * $f1b); $or = $nr; $og = $ng; $ob = $nb; //vertical $rgb = imagecolorat($dstimg,$x,$y+1); $vr = ($rgb >> 16) & 0xFF; $vg = ($rgb >> 8) & 0xFF; $vb = ($rgb) & 0xFF; $nr = ($nr * $f1a) + ($vr * $f1b); $ng = ($ng * $f1a) + ($vg * $f1b); $nb = ($nb * $f1a) + ($vb * $f1b); $vr = $nr; $vg = $ng; $vb = $nb; imagesetpixel($dstimg,$x,$y,($nr << 16) | ($ng << 8) | ($nb)); } } //------------------------------------------------- return $dstimg; } $srcimg = imagecreatefromjpeg("test.jpg"); $dstimg = blurImage($srcimg,0.45); header('Content-type: image/jpeg'); echo( imagejpeg($dstimg) ); exit(); ?> 效果 原图 处理后
相关文章推荐
- Windows FTP服务器的搭建
- Laravel 手动分页实现
- PHP中将ip地址转成十进制数的两种实用方法
- Composer中国镜像
- 【51CTO学院三周年】通往程序猿艰辛历程,幸好遇到51CTO学院
- 通过url获取图片尺寸的几种方法:JS和php
- PHP判断一天打卡的第一个时间和最后的时间
- php导出mysql数据字典
- yii框架-yii2分页的使用与扩展(十五)
- PHP实现导入excel表格的代码
- Yii2.0 数据库查询
- 一些php东西
- PHP读写XML文件
- ThinkPHP3.2.3版本框架could not find driver错误
- php 支付宝的几个坑
- output 010123234545
- 使用PHP QR Code生成二维码
- TP框架表单提交地址总是不正确
- Zend Optimizer not installed可能原因及解决方法
- yii2史上最简单式安装教程,没有之一(转)