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实现Ftp用户的在线管理的代码
Mar 06 PHP
用PHP生成html分页列表的代码
Mar 18 PHP
php 高效率写法 推荐
Feb 21 PHP
php数组函数序列之sort() 对数组的元素值进行升序排序
Nov 02 PHP
php实现监听事件
Nov 06 PHP
PHP中Session引起的脚本阻塞问题解决办法
Apr 08 PHP
Codeigniter实现智能裁剪图片的方法
Jun 12 PHP
PHP中定义数组常量(array常量)的方法
Nov 17 PHP
PHP中error_log()函数的使用方法
Jan 20 PHP
php的socket编程详解
Nov 20 PHP
laravel请求参数校验方法
Oct 10 PHP
PHP设计模式之 策略模式Strategy详解【对象行为型】
May 01 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将数据库中的电话号码读取出来并生成图片
2008/08/31 PHP
保存到桌面、设为桌面且带图标的PHP代码
2013/11/19 PHP
通过dbi使用perl连接mysql数据库的方法
2014/04/16 PHP
PHP防止post重复提交数据的简单例子
2014/06/07 PHP
ThinkPHP实现一键清除缓存方法
2014/06/26 PHP
CMS中PHP判断系统是否已经安装的方法示例
2014/07/26 PHP
PHP正则表达式 /i, /is, /s, /isU等介绍
2014/10/23 PHP
PHP页面实现定时跳转的方法
2014/10/31 PHP
php可生成缩略图的文件上传类实例
2014/12/17 PHP
PHP中把对象数组转换成普通数组的方法
2015/07/10 PHP
php中preg_match的isU代表什么意思
2015/10/01 PHP
Yii 2.0中场景的使用教程
2017/06/02 PHP
js如何判断用户是否是用微信浏览器
2014/06/05 Javascript
Json实现异步请求提交评论无需跳转其他页面
2014/10/11 Javascript
浅谈jquery回调函数callback的使用
2015/01/30 Javascript
JS 数字转换为大写金额的简单实例
2016/08/04 Javascript
jQuery中checkbox反复调用attr('checked', true/false)只有第一次生效的解决方法
2016/11/16 Javascript
Vue.js路由组件vue-router使用方法详解
2016/12/02 Javascript
AngularJS指令与指令之间的交互功能示例
2016/12/14 Javascript
jQuery UI Draggable + Sortable 结合使用(实例讲解)
2017/09/07 jQuery
Vue的elementUI实现自定义主题方法
2018/02/23 Javascript
layui table 表格模板按钮的实例代码
2019/09/21 Javascript
VSCode写vue项目一键生成.vue模版,修改定义其他模板的方法
2020/04/17 Javascript
vant实现购物车功能
2020/06/29 Javascript
在ironpython中利用装饰器执行SQL操作的例子
2015/05/02 Python
Python环境搭建之OpenCV的步骤方法
2017/10/20 Python
详解python解压压缩包的五种方法
2019/07/05 Python
Tensorflow的梯度异步更新示例
2020/01/23 Python
Max&Co官网:意大利年轻女性时尚品牌
2017/05/16 全球购物
德国著名廉价网上药店:Shop-Apotheke
2017/07/23 全球购物
小学生自我评价范文
2014/01/25 职场文书
商场促销活动方案
2014/02/08 职场文书
优良学风班总结材料
2014/02/08 职场文书
2014年工作总结与下年工作计划
2014/11/27 职场文书
刑事附带民事诉讼答辩状
2015/05/22 职场文书
2015年学校禁毒工作总结
2015/05/27 职场文书