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 相关文章推荐
php 修改zen-cart下单和付款流程以防止漏单
Mar 08 PHP
PHP计划任务、定时执行任务的实现代码
Apr 23 PHP
php学习之变量的使用
May 29 PHP
让codeigniter与swfupload整合的最佳解决方案
Jun 12 PHP
解密ThinkPHP3.1.2版本之独立分组功能应用
Jun 19 PHP
PHP的引用详解
Feb 22 PHP
php根据某字段对多维数组进行排序的方法
Mar 07 PHP
PHP生成各种常见验证码和Ajax验证过程
Jan 10 PHP
Zend Framework实现具有基本功能的留言本(附demo源码下载)
Mar 22 PHP
PHP中使用foreach()遍历二维数组的简单实例
Jun 13 PHP
PHP Oauth授权和本地加密实现方法
Aug 12 PHP
PHP删除数组中特定元素的两种方法
Feb 28 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中VC6 X86和VC9 X86的区别及 Non Thread Safe的意思
2013/06/28 PHP
PHP实现的简单缓存类
2015/07/29 PHP
Laravel 错误提示本地化的实现
2019/10/22 PHP
JQuery.uploadify 上传文件插件的使用详解 for ASP.NET
2010/01/22 Javascript
JavaScript中各种编码解码函数的区别和注意事项
2010/08/19 Javascript
利用javascript的面向对象的特性实现限制试用期
2011/08/04 Javascript
Javascript实现的类似Google的Div拖动效果代码
2011/08/09 Javascript
一个关于jqGrid使用的小例子(行按钮)
2011/11/04 Javascript
web基于浏览器的本地存储方法应用
2012/11/27 Javascript
关于删除时的提示处理(确定删除吗)
2013/11/03 Javascript
jquery日历控件实现方法分享
2014/03/07 Javascript
jQuery EasyUI datagrid实现本地分页的方法
2015/02/13 Javascript
jQuery实现简单的DIV拖动效果
2016/02/19 Javascript
AngularJS基础 ng-click 指令示例代码
2016/08/01 Javascript
使用JS实现图片展示瀑布流效果的实例代码
2016/09/12 Javascript
Vue.js 插件开发详解
2017/03/29 Javascript
JavaScript实现隐藏省略文字效果的方法
2017/04/27 Javascript
实例学习JavaScript读取和写入cookie
2018/01/29 Javascript
Chart.js 轻量级HTML5图表绘制工具库(知识整理)
2018/05/22 Javascript
如何使用electron-builder及electron-updater给项目配置自动更新
2018/12/24 Javascript
vue滚动插件better-scroll使用详解
2019/10/18 Javascript
浏览器JavaScript调试功能无法使用解决方案
2020/09/18 Javascript
使用python装饰器计算函数运行时间的实例
2018/04/21 Python
Python数据结构之栈、队列及二叉树定义与用法浅析
2018/12/27 Python
使用python读取.text文件特定行的数据方法
2019/01/28 Python
Django使用模板后无法找到静态资源文件问题解决
2019/07/19 Python
Win10里python3创建虚拟环境的步骤
2020/01/31 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
2020/12/14 Python
CSS3实现类似翻书效果的过渡动画的示例代码
2019/09/06 HTML / CSS
laravel使用redis队列实例讲解
2021/03/23 PHP
大学新生军训个人的自我评价
2013/10/03 职场文书
教师业务学习制度
2014/01/25 职场文书
颁奖典礼主持词
2014/03/25 职场文书
会议邀请函
2015/01/30 职场文书
2015应届毕业生求职信范文
2015/03/20 职场文书
MySQL REVOKE实现删除用户权限
2021/06/18 MySQL