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代码 用PHP写出自己的BLOG系统
Apr 12 PHP
php is_file 判断给定文件名是否为一个正常的文件
May 10 PHP
PHP读取数据库并按照中文名称进行排序实现代码
Jan 29 PHP
php读取本地文件常用函数(fopen与file_get_contents)
Sep 09 PHP
php版淘宝网查询商品接口代码示例
Jun 17 PHP
php获取英文姓名首字母的方法
Jul 13 PHP
PHP模板引擎Smarty内置变量调解器用法详解
Apr 11 PHP
php array_reverse 以相反的顺序返回数组实例代码
Apr 11 PHP
PHP实现文字写入图片功能
Feb 18 PHP
PHP里的$_GET数组介绍
Mar 22 PHP
PHP小程序支付功能完整版【基于thinkPHP】
Mar 26 PHP
Thinkphp 框架配置操作之动态配置、扩展配置及批量配置实例分析
May 15 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/07/08 PHP
PHP面向对象程序设计实例分析
2016/01/26 PHP
php str_getcsv把字符串解析为数组的实现方法
2017/04/05 PHP
php数据结构之顺序链表与链式线性表示例
2018/01/22 PHP
tp5(thinkPHP5框架)使用DB实现批量删除功能示例
2019/05/28 PHP
Ext grid 添加右击菜单
2009/11/26 Javascript
ECMAScript 创建自己的js类库
2012/11/22 Javascript
JS中的form.submit()不能提交表单的错误原因
2014/10/08 Javascript
JQuery中Text方法用法实例分析
2015/05/18 Javascript
JavaScript实现iframe自动高度调整和不同主域名跨域
2016/02/27 Javascript
基于Bootstrap和jQuery构建前端分页工具实例代码
2016/11/23 Javascript
JS实现双击内容变为可编辑状态
2017/03/03 Javascript
Angularjs实现控制器之间通信方式实例总结
2018/03/27 Javascript
vue element中axios下载文件(后端Python)
2019/05/10 Javascript
js回调函数仿360开机
2019/12/26 Javascript
[02:16]DOTA2超级联赛专访Burning 逆袭需要抓住机会
2013/06/24 DOTA
python实现多线程抓取知乎用户
2016/12/12 Python
基于数据归一化以及Python实现方式
2018/07/11 Python
对Python3+gdal 读取tiff格式数据的实例讲解
2018/12/04 Python
Python基础之变量基本用法与进阶详解
2020/01/03 Python
python网络编程:socketserver的基本使用方法实例分析
2020/04/09 Python
tensorflow安装成功import tensorflow 出现问题
2020/04/16 Python
详解使用CSS3的@media来编写响应式的页面
2017/11/01 HTML / CSS
利用CSS3实现文字折纸效果实例代码
2018/07/10 HTML / CSS
使用HTML5做个画图板的方法介绍
2013/05/03 HTML / CSS
新西兰最大的天然保健及护肤品网站:HealthPost(直邮中国)
2021/02/13 全球购物
说出数据连接池的工作机制是什么?
2013/04/19 面试题
物理专业本科生自荐信
2014/01/30 职场文书
报告会主持词
2014/04/02 职场文书
公司委托书格式
2014/08/01 职场文书
材料员岗位职责范本
2015/04/11 职场文书
学校教师培训工作总结
2015/10/14 职场文书
2019职场实习报告该怎么写?
2019/07/01 职场文书
读《茶花女》有感:山茶花的盛开与凋零
2020/01/17 职场文书
vue二维数组循环嵌套方式 循环数组、循环嵌套数组
2022/04/24 Vue.js
python区块链持久化和命令行接口实现简版
2022/05/25 Python