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 相关文章推荐
复杂检索数据并分页显示的处理方法
Oct 09 PHP
php 用sock技术发送邮件的函数
Jul 21 PHP
php array_flip() 删除数组重复元素
Jan 14 PHP
PHP 杂谈《重构-改善既有代码的设计》之五 简化函数调用
May 07 PHP
将时间以距今多久的形式表示,PHP,js双版本
Sep 25 PHP
php导入大量数据到mysql性能优化技巧
Dec 29 PHP
php使用socket post数据到其它web服务器的方法
Jun 02 PHP
Zend Framework教程之Zend_Db_Table_Row用法实例分析
Mar 21 PHP
浅谈PHP中其他类型转化为Bool类型
Mar 28 PHP
PHP微信API接口类
Aug 22 PHP
用PHP的反射实现委托模式的讲解
Mar 22 PHP
PHP http请求超时问题解决方案
Nov 13 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
11个PHP 分页脚本推荐
2011/08/15 PHP
php调用KyotoTycoon简单实例
2015/04/02 PHP
php生成图片验证码
2015/06/09 PHP
PHP + plupload.js实现多图上传并显示进度条加删除实例代码
2017/03/06 PHP
Jquery插件编写简明教程
2014/03/25 Javascript
Bootstrap每天必学之模态框(Modal)插件
2016/04/26 Javascript
BootStrap实现响应式布局导航栏折叠隐藏效果(在小屏幕、手机屏幕浏览时自动折叠隐藏)
2016/11/30 Javascript
JavaScript中数据类型转换总结
2016/12/25 Javascript
Jquery EasyUI Datagrid右键菜单实现方法
2016/12/30 Javascript
Iscrool下拉刷新功能实现方法(推荐)
2017/06/26 Javascript
NodeJs实现定时任务的示例代码
2017/12/05 NodeJs
JS交互点击WKWebView中的图片实现预览效果
2018/01/05 Javascript
vue 下列表侧滑操作实例代码详解
2018/07/24 Javascript
Vue中的组件及路由使用实例代码详解
2019/05/22 Javascript
JS实现随机抽选获奖者
2019/11/07 Javascript
跟老齐学Python之玩转字符串(2)
2014/09/14 Python
Pycharm2017版本设置启动时默认自动打开项目的方法
2018/10/29 Python
Python实现word2Vec model过程解析
2019/12/16 Python
python kafka 多线程消费者&amp;手动提交实例
2019/12/21 Python
解决python cv2.imread 读取中文路径的图片返回为None的问题
2020/06/02 Python
Python如何读写字节数据
2020/08/05 Python
python基于socket模拟实现ssh远程执行命令
2020/12/05 Python
python SOCKET编程基础入门
2021/02/27 Python
Python与C/C++的相互调用案例
2021/03/04 Python
结合CSS3的布局新特征谈谈常见布局方法
2016/01/22 HTML / CSS
CSS3过渡transition效果实例介绍
2016/05/03 HTML / CSS
html5 Canvas画图教程(7)—canvas里画曲线之quadraticCurveTo方法
2013/01/09 HTML / CSS
英国航空官网:British Airways
2016/09/11 全球购物
美国著名手表网站:Timepiece
2017/11/15 全球购物
linux下进程间通信的方式
2014/12/23 面试题
继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?
2015/11/18 面试题
科室工作个人总结的自我评价
2013/10/29 职场文书
少先队入队活动方案
2014/02/08 职场文书
旅游文化节策划方案
2014/06/06 职场文书
社区服务活动小结
2014/07/08 职场文书
党的群众路线整改落实情况汇报
2014/10/28 职场文书