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 和 MySQL 开发的 8 个技巧
Oct 09 PHP
用php和MySql来与ODBC数据连接
Oct 09 PHP
使用Xdebug调试和优化PHP程序之[1]
Apr 17 PHP
PHP 5.3.0 安装分析心得
Aug 07 PHP
php 目录与文件处理-郑阿奇(续)
Jul 04 PHP
JSON用法之将PHP数组转JS数组,JS如何接收PHP数组
Oct 08 PHP
PHP的Laravel框架中使用AdminLTE模板来编写网站后台界面
Mar 21 PHP
ThinkPHP使用Ueditor的方法详解
May 20 PHP
php使用ftp实现文件上传与下载功能
Jul 21 PHP
针对PHP开发安全问题的相关总结
Mar 22 PHP
php生成随机数/生成随机字符串的方法小结【5种方法】
May 27 PHP
php 原生分页
Apr 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中使用cookie来保存用户登录信息的实现代码
2012/03/08 PHP
PHP header()函数常用方法总结
2014/04/11 PHP
将二维数组转为一维数组的2种方法
2014/05/26 PHP
PHP实现的英文名字全拼随机排号脚本
2014/07/04 PHP
Zend Framework教程之Application用法实例详解
2016/03/14 PHP
php实现将HTML页面转换成word并且保存的方法
2016/10/14 PHP
php生成图片缩略图功能示例
2017/02/22 PHP
PHP开发中解决并发问题的几种实现方法分析
2017/11/13 PHP
PHP大文件切割上传并带进度条功能示例
2019/07/01 PHP
javascript调试之DOM断点调试法使用技巧分享
2014/04/15 Javascript
论JavaScript模块化编程
2016/03/07 Javascript
关于JS Lodop打印插件打印Bootstrap样式错乱问题的解决方案
2016/12/23 Javascript
nodejs对express中next函数的一些理解
2017/09/08 NodeJs
详解Vue2 SSR 缓存 Api 数据
2017/11/20 Javascript
React.js绑定this的5种方法(小结)
2018/06/05 Javascript
浅析微信扫码登录原理(小结)
2018/10/29 Javascript
实现Vue的markdown文档可以在线运行的方法示例
2018/12/11 Javascript
layui监听单元格编辑前后交互的例子
2019/09/16 Javascript
利用layer实现表单完美验证的方法
2019/09/26 Javascript
JS代码优化的8点建议
2020/02/04 Javascript
NestJs使用Mongoose对MongoDB操作的方法
2021/02/22 Javascript
[04:44]DOTA2英雄梦之声_第12期_矮人直升机
2014/06/21 DOTA
Python中利用sqrt()方法进行平方根计算的教程
2015/05/15 Python
在DigitalOcean的服务器上部署flaskblog应用
2015/12/19 Python
Python实现新浪博客备份的方法
2016/04/27 Python
python实现批量修改图片格式和尺寸
2018/06/07 Python
使用python将图片格式转换为ico格式的示例
2018/10/22 Python
真正了解CSS3背景下的@font face规则
2017/05/04 HTML / CSS
用HTML5制作一个简单的桌球游戏的教程
2015/05/12 HTML / CSS
HTML5 Canvas玩转酷炫大波浪进度图效果实例(附demo)
2016/12/14 HTML / CSS
优秀志愿者事迹材料
2014/02/03 职场文书
安全目标责任书
2014/07/22 职场文书
婚前协议书标准版
2014/10/19 职场文书
2015年教研组工作总结
2015/05/04 职场文书
2015年妇幼卫生工作总结
2015/05/23 职场文书
PhpSpreadsheet中文文档 | Spreadsheet操作教程实例
2021/04/01 PHP