php实现图片局部打马赛克的方法


Posted in PHP onFebruary 11, 2015

本文实例讲述了php实现图片局部打马赛克的方法。分享给大家供大家参考。具体分析如下:

原理:

对图片中选定区域的每一像素,增加若干宽度及高度,生成矩型。而每一像素的矩型重叠在一起,就形成了马赛克效果。
本例使用GD库的imagecolorat获取像素颜色,使用imagefilledrectangle画矩型。

效果图如下所示:

php实现图片局部打马赛克的方法

代码如下:

<?php  

/** 图片局部打马赛克 

* @param  String  $source 原图 

* @param  Stirng  $dest   生成的图片 

* @param  int     $x1     起点横坐标 

* @param  int     $y1     起点纵坐标 

* @param  int     $x2     终点横坐标 

* @param  int     $y2     终点纵坐标 

* @param  int     $deep   深度,数字越大越模糊 

* @return boolean 

*/  

function imageMosaics($source, $dest, $x1, $y1, $x2, $y2, $deep){  

  

    // 判断原图是否存在  

    if(!file_exists($source)){  

        return false;  

    }  

  

    // 获取原图信息  

    list($owidth, $oheight, $otype) = getimagesize($source);  

  

    // 判断区域是否超出图片  

    if($x1>$owidth || $x1<0 || $x2>$owidth || $x2<0 || $y1>$oheight || $y1<0 || $y2>$oheight || $y2<0){  

        return false;  

    }  

  

    switch($otype){  

        case 1: $source_img = imagecreatefromgif($source); break;  

        case 2: $source_img = imagecreatefromjpeg($source); break;  

        case 3: $source_img = imagecreatefrompng($source); break;  

        default:  

            return false;  

    }  

  

    // 打马赛克  

    for($x=$x1; $x<$x2; $x=$x+$deep){  

        for($y=$y1; $y<$y2; $y=$y+$deep){  

            $color = imagecolorat($source_img, $x+round($deep/2), $y+round($deep/2));  

            imagefilledrectangle($source_img, $x, $y, $x+$deep, $y+$deep, $color);  

        }  

    }  

  

    // 生成图片  

    switch($otype){  

        case 1: imagegif($source_img, $dest); break;  

        case 2: imagejpeg($source_img, $dest); break;  

        case 3: imagepng($source_img, $dest); break;  

    }  

  

    return is_file($dest)? true : false;  

  

}  

  

$source = 'source.jpg';  

$dest = 'dest.jpg';  

  

$flag = imageMosaics($source, $dest, 176, 98, 273, 197, 4);  

echo '<img src="'.$source.'">';  

echo '<img src="'.$dest.'">';  

?>

完整实例代码点击此处本站下载。

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

PHP 相关文章推荐
一个很方便的 XML 类!!原创的噢
Oct 09 PHP
一个分页的论坛
Oct 09 PHP
使用adodb lite解决问题
Dec 31 PHP
PHP XML操作类DOMDocument
Dec 16 PHP
使用php显示搜索引擎来的关键词
Feb 13 PHP
PHP之图片上传类实例代码(加了缩略图)
Jun 30 PHP
Zend Framework上传文件重命名的实现方法
Nov 25 PHP
Zend Framework校验器Zend_Validate用法详解
Dec 09 PHP
PHP查询分页的实现代码
Jun 09 PHP
php中文乱码问题的终极解决方案汇总
Aug 01 PHP
PHP PDOStatement::bindValue讲解
Jan 30 PHP
php模式设计之观察者模式应用实例分析
Sep 25 PHP
php实现获取文件mime类型的方法
Feb 11 #PHP
php强制更新图片缓存的方法
Feb 11 #PHP
Laravel中使用自己编写类库的3种方法
Feb 10 #PHP
Laravel中使用阿里云OSS Composer包分享
Feb 10 #PHP
PHP实现Javascript中的escape及unescape函数代码分享
Feb 10 #PHP
PHP实现获取FLV文件的时间
Feb 10 #PHP
PHP中实现获取IP和地理位置类分享
Feb 10 #PHP
You might like
php实现判断访问来路是否为搜索引擎机器人的方法
2015/04/15 PHP
PHP获取input输入框中的值去数据库比较显示出来
2016/11/16 PHP
求解开jscript.encode代码的asp函数
2007/02/28 Javascript
javascript 学习笔记(八)javascript对象
2011/04/12 Javascript
JavaScript EasyPager 分页函数
2011/05/25 Javascript
理解Javascript的动态语言特性
2015/06/17 Javascript
前端js实现文件的断点续传 后端PHP文件接收
2016/10/14 Javascript
JS实现淡入淡出图片效果的方法分析
2016/12/20 Javascript
ES5 ES6中Array对象去除重复项的方法总结
2017/04/27 Javascript
利用Javascript开发一个二维周视图日历
2017/12/14 Javascript
基于rollup的组件库打包体积优化小结
2018/06/18 Javascript
对vue v-if v-else-if v-else 的简单使用详解
2018/09/29 Javascript
Node.js折腾记一:读指定文件夹,输出该文件夹的文件树详解
2019/04/20 Javascript
OpenLayers3实现地图鹰眼以及地图比例尺的添加
2020/09/25 Javascript
JavaScript函数柯里化实现原理及过程
2020/12/02 Javascript
python关键字and和or用法实例
2015/05/28 Python
Python3.X 线程中信号量的使用方法示例
2017/07/24 Python
关于Django外键赋值问题详解
2017/08/13 Python
python奇偶行分开存储实现代码
2018/03/19 Python
python flask中静态文件的管理方法
2018/03/20 Python
django ajax json的实例代码
2018/05/29 Python
Python中的十大图像处理工具(小结)
2019/06/10 Python
用Python爬取QQ音乐评论并制成词云图的实例
2019/08/24 Python
详解Anconda环境下载python包的教程(图形界面+命令行+pycharm安装)
2019/11/11 Python
python使用itchat模块给心爱的人每天发天气预报
2019/11/25 Python
python3 字符串知识点学习笔记
2020/02/08 Python
印度最大的时尚购物网站:Myntra
2018/09/13 全球购物
新加坡第一的杂货零售商:NTUC FairPrice
2020/12/05 全球购物
《我的信念》教学反思
2014/02/15 职场文书
社会实践活动总结报告
2014/04/29 职场文书
教学改革问题查摆整改措施
2014/09/27 职场文书
工商局领导班子存在的问题整改措施思想汇报
2014/10/05 职场文书
写一个Python脚本自动爬取Bilibili小视频
2021/04/24 Python
详解Mysql和Oracle之间的误区
2021/05/18 MySQL
MySQL修炼之联结与集合浅析
2021/10/05 MySQL
聊聊redis-dump工具安装问题
2022/01/18 Redis