php 图片局部打马赛克

原理:

对图片中选定区域的每一像素,增加若干宽度及高度,生成矩型。而每一像素的矩型重叠在一起,就形成了马赛克效果。

本例使用GD库的imagecolorat获取像素颜色,使用imagefilledrectangle画矩型。

效果图:

代码如下:

[php] view plaincopy
  1. <?php
  2. /** 图片局部打马赛克
  3. * @param  String  $source 原图
  4. * @param  Stirng  $dest   生成的图片
  5. * @param  int     $x1     起点横坐标
  6. * @param  int     $y1     起点纵坐标
  7. * @param  int     $x2     终点横坐标
  8. * @param  int     $y2     终点纵坐标
  9. * @param  int     $deep   深度,数字越大越模糊
  10. * @return boolean
  11. */
  12. function imageMosaics($source, $dest, $x1, $y1, $x2, $y2, $deep){
  13. // 判断原图是否存在
  14. if(!file_exists($source)){
  15. return false;
  16. }
  17. // 获取原图信息
  18. list($owidth, $oheight, $otype) = getimagesize($source);
  19. // 判断区域是否超出图片
  20. if($x1>$owidth || $x1<0 || $x2>$owidth || $x2<0 || $y1>$oheight || $y1<0 || $y2>$oheight || $y2<0){
  21. return false;
  22. }
  23. switch($otype){
  24. case 1: $source_img = imagecreatefromgif($source); break;
  25. case 2: $source_img = imagecreatefromjpeg($source); break;
  26. case 3: $source_img = imagecreatefrompng($source); break;
  27. default:
  28. return false;
  29. }
  30. // 打马赛克
  31. for($x=$x1; $x<$x2; $x=$x+$deep){
  32. for($y=$y1; $y<$y2; $y=$y+$deep){
  33. $color = imagecolorat($source_img, $x+round($deep/2), $y+round($deep/2));
  34. imagefilledrectangle($source_img, $x, $y, $x+$deep, $y+$deep, $color);
  35. }
  36. }
  37. // 生成图片
  38. switch($otype){
  39. case 1: imagegif($source_img, $dest); break;
  40. case 2: imagejpeg($source_img, $dest); break;
  41. case 3: imagepng($source_img, $dest); break;
  42. }
  43. return is_file($dest)? true : false;
  44. }
  45. $source = 'source.jpg';
  46. $dest = 'dest.jpg';
  47. $flag = imageMosaics($source, $dest, 176, 98, 273, 197, 4);
  48. echo '<img src="'.$source.'">';
  49. echo '<img src="'.$dest.'">';
  50. ?>

php 图片局部打马赛克相关推荐

  1. 马赛克 php,php实现图片局部打马赛克的方法

    本文实例讲述了php实现图片局部打马赛克的方法.分享给大家供大家参考.具体分析如下: 原理: 对图片中选定区域的每一像素,增加若干宽度及高度,生成矩型.而每一像素的矩型重叠在一起,就形成了马赛克效果. ...

  2. 马赛克 php,php实现图片局部打马赛克的方法_php技巧

    本文实例讲述了php实现图片局部打马赛克的方法.分享给大家供大家参考.具体分析如下: 原理: 对图片中选定区域的每一像素,增加若干宽度及高度,生成矩型.而每一像素的矩型重叠在一起,就形成了马赛克效果. ...

  3. Java实现给图片局部打马赛克

    因为项目需要用到给图片打码的功能,本身实现也不是很复杂,就没有借鉴其他类库,参照网上的一些资料实现了一个简单的给图片局部打码的功能.也可以给一个图片的多个局部进行打码. ImageArea.java ...

  4. Java实现给图片局部打马赛克(前提是知道坐标的情况下)

    直接上代码 package com.test;/*** 图片区域类* @author hty**/ public class ImageArea {int x; //指定区域左上角横坐标int y; ...

  5. matlab检测图片马赛克,python 检测图片是否有马赛克

    原理讲的很清晰,给原博主一个赞 边缘检测之后按照正方形检索来判定是否是马赛克内容 原理知晓了之后就很好做了 话说MATLAB转化为python的过程还是很有趣的 from PIL import Ima ...

  6. python图片马赛克_python 检测图片是否有马赛克

    原理讲的很清晰,给原博主一个赞 边缘检测之后按照正方形检索来判定是否是马赛克内容 原理知晓了之后就很好做了 话说MATLAB转化为python的过程还是很有趣的 from PIL import Ima ...

  7. python去除图片马赛克_python 检测图片是否有马赛克

    首先是canny边缘检测,将图片的边缘检测出来,参考博客 原理讲的很清晰,给原博主一个赞 边缘检测之后按照正方形检索来判定是否是马赛克内容 原理知晓了之后就很好做了 话说matlab转化为python ...

  8. svg模糊图片局部清晰透视图

    demo下载地址: http://download.csdn.net/download/one_girl/10163426 html代码: <body><div class=&quo ...

  9. 苹果自带相册打马赛克_剪映app怎么给视频局部打马赛克

    剪映app怎么给视频局部打马赛克呢?很多用户对此还不是很清楚,小编这里就给大家带来有关剪映app怎么给视频局部打马赛克的回答,希望能够对大家有所帮助. 1.首先打开剪映app,进入首页后点击开始创作选 ...

最新文章

  1. 数据结构与算法笔记(十二)—— 查找算法(顺序查找、二分法查找)
  2. C语言再学习 -- 详解C++/C 面试题 1
  3. 牛客网 PAT 算法历年真题 1003: 数素数 (20)
  4. mysql数据库ip地址_MySQL数据库存储IP地址的方法
  5. java 死循环排查_java应用死循环排查方法或查找程序消耗资源的线程方法(面试)...
  6. cardsui-for-android
  7. 【转】VSTS中版本控制系统Git与TFVC的区别
  8. java 家庭收支账户
  9. kafka发送消息至指定分区
  10. 站长吧asp工具设置_网站更换域名需要怎么办?网站更换域名如何设置?
  11. printf() 输出控制符
  12. Android保活实现方案梳理
  13. ubuntu20.04下开发海康威视网络摄像头sdk(一)运行示例程序
  14. ubuntu16.04安装red5
  15. China Pub 高清书籍6CD 包含的图书目录
  16. linux查看录音驱动程序,Linux 下查看麦克风或音频采集设备
  17. 电脑白屏,电脑白屏是怎么回事?是系统的原因还是
  18. 计算机网络时代纪录片,中国首部自媒体纪录片《生机》揭秘新世相
  19. 阿尔茨海默病与正常衰老中的脑萎缩研究进展
  20. 腾讯区块链发行多少腾讯区块链如何投资?

热门文章

  1. 2022年安全员-B证考试题库及答案
  2. 百度富文本添加导入word文件
  3. 好用的公司企业邮箱推荐,微信企业邮箱登录技巧大全
  4. springboot使用Validation API和全局异常优雅的校验方法参数
  5. 你这磨人的小妖精——选中文本并标注的实现过程
  6. 微信公众平台开发30分钟入门教程
  7. python遍历数组的方法小结
  8. QT利用xlsx库将TableWidget保存excel文件
  9. QMI8610 QMC5883调试记录
  10. Word2016安装Mathtype后在选项卡显示