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
第九节--绑定
Nov 16 PHP
PHP 编程请选择正确的文本编辑软件
Dec 21 PHP
完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题
Jun 20 PHP
深入PHP许愿墙模块功能分析
Jun 25 PHP
php实现的日历程序
Jun 18 PHP
PHP使用正则表达式获取微博中的话题和对象名
Jul 18 PHP
PHP图片裁剪与缩放示例(无损裁剪图片)
Feb 08 PHP
PHP魔术方法之__call与__callStatic使用方法
Jul 23 PHP
利用php获得flv视频长度的实例代码
Oct 26 PHP
PHP设计模式之建造者模式定义与用法简单示例
Aug 13 PHP
Laravel-admin之修改操作日志的方法
Sep 30 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
一些操作和快捷键的理解和讨论
2020/03/04 星际争霸
laravel学习教程之存取器
2016/07/30 PHP
PHP排序二叉树基本功能实现方法示例
2018/05/26 PHP
PHP中的Iterator迭代对象属性详解
2019/04/12 PHP
Prototype中dom对象方法汇总
2008/09/17 Javascript
JS window.opener返回父页面的应用
2009/10/24 Javascript
Prototype源码浅析 String部分(三)之HTML字符串处理
2012/01/15 Javascript
Jquery为单选框checkbox绑定单击click事件
2012/12/18 Javascript
JS阻止冒泡事件以及默认事件发生的简单方法
2014/01/17 Javascript
网页运行时提示对象不支持abigimage属性或方法
2014/08/10 Javascript
JavaScript数据结构和算法之二叉树详解
2015/02/11 Javascript
javascript解三阶幻方(九宫格)
2015/04/22 Javascript
JS实现窗口加载时模拟鼠标移动的方法
2015/06/03 Javascript
JS实现单击输入框弹出选择框效果完整实例
2015/12/14 Javascript
轻松实现javascript图片轮播特效
2016/01/13 Javascript
JS中如何实现点击a标签返回页面顶部的问题
2017/01/19 Javascript
javascript中的面向对象
2017/03/30 Javascript
js推箱子小游戏步骤代码解析
2018/01/10 Javascript
ng-repeat指令在迭代对象时的去重方法
2018/10/02 Javascript
react的滑动图片验证码组件的示例代码
2019/02/27 Javascript
手把手教您实现react异步加载高阶组件
2020/04/07 Javascript
微信小程序实现下拉加载更多商品
2020/12/29 Javascript
python自动化测试之setUp与tearDown实例
2014/09/28 Python
python使用socket创建tcp服务器和客户端
2018/04/12 Python
python实现向微信用户发送每日一句 python实现微信聊天机器人
2019/03/27 Python
详解Python 切片语法
2019/06/10 Python
QML用PathView实现轮播图
2020/06/03 Python
欧洲最大的婴幼儿服装及内衣公司:Petit Bateau(小帆船)
2016/08/16 全球购物
彪马英国官网:PUMA英国
2019/02/11 全球购物
Lime Crime官网:美国一家主打梦幻精灵系的彩妆品牌
2019/03/22 全球购物
分解成质因数(如435234=251*17*17*3*2,据说是华为笔试题)
2014/07/16 面试题
三个Unix的命令面试题
2015/04/12 面试题
网络信息管理员岗位职责
2014/01/05 职场文书
大学应届生的自我评价
2014/03/06 职场文书
保姆聘用合同
2015/09/21 职场文书
Python如何使用循环结构和分支结构
2022/04/13 Python