原文地址:Android图像处理-像素化的原理及实现

博客地址:xiazdong.github.io

马赛克算法首先需要确定马赛克单元的大小,即小方块的大小。马赛克图的每个马赛克单元都是纯色的块,其取值一般为原图中该块区域的颜色的均值(这里的实现为了简化,取了原图中该区域左上角的像素)。马赛克单元的大小决定了最后的马赛克图的样子,当值为1时,就是原图。

上图中,最左边的图是原图,中间的图是马赛克图。当然你也可以对图像的某块区域打马赛克,如最右边的图,他只对头部打马赛克。

算法实现如下:

public class PixelateUtil {/ 普通图像->像素图,zoneWidth为像素图的大像素的宽度/public static Bitmap pixelate(Bitmap bitmap, int zoneWidth) {return pixelate(bitmap, zoneWidth, 0, 0, bitmap.getWidth(), bitmap.getHeight());}/ 普通图->像素图,left、top、right、bottom可指定打马赛克区域/public static Bitmap pixelate(Bitmap bitmap, int zoneWidth, int left, int top, int right, int bottom) {int w = bitmap.getWidth();int h = bitmap.getHeight();Bitmap result = bitmap.copy(Bitmap.Config.ARGB_8888, true);Canvas canvas = new Canvas(result);Paint paint = new Paint();for (int i = left; i < right; i += zoneWidth) {for (int j = top; j < bottom; j += zoneWidth) {int color = bitmap.getPixel(i, j);paint.setColor(color);int gridRight = Math.min(w, i + zoneWidth);int gridBottom = Math.min(h, j + zoneWidth);canvas.drawRect(i, j, gridRight, gridBottom, paint);}}return result;}
}

使用方法:

Bitmap result = PixelateUtil.pixelate(bitmap, zoneWidth);  //对全图打马赛克
Bitmap result = PixelateUtil.pixelate(bitmap, zoneWidth, left, top, right, bottom); //对指定区域打马赛克

开源项目

Pixelate是实现基本马赛克效果的开源项目,它能够异步对整个或者部分的Bitmap区域打马赛克,处理完后会在OnPixelateListener的onPixelated()中回调,最小的SDK版本为16。

使用方法如下:

new Pixelate(origin).setArea(0,0,origin.getWidth(),origin.getHeight())  //设置区域.setDensity(12) //值越大,马赛克单元越小.setListener(new OnPixelateListener() {@Overridepublic void onPixelated(Bitmap bitmap, int density) {//bitmap为马赛克图Log.v(TAG, "");}}).make();

android-close-pixelate能够实现多样式的马赛克效果。使用方法如下:

Bitmap pixelated = Pixelate.fromBitmap(origin,new PixelateLayer.Builder(PixelateLayer.Shape.Circle) //设置马赛克形状.setResolution(30) //每个像素的密度(如果该值和size值一样,那么圆形之间相邻).setSize(30) //圆圈的大小.build()
);

效果如下:

Android图像处理-像素化的原理及实现相关推荐

  1. android 7.0 高斯模糊,Android图像处理 – 高斯模糊的原理及实现

    前言 高斯模糊是图像处理中几乎每个程序员都或多或少听过的名词,但是对其原理大家可能并不了解,只知道通过高斯模糊能实现图像毛玻璃效果. 本文首先介绍图像处理中最基本的概念:卷积:随后介绍高斯模糊的核心内 ...

  2. Android图像处理整理

    Android图像处理整理 参考:http://blog.csdn.net/luzhenyuxfcy/article/details/49427781 我们常用的处理方式基本都是在对像素矩阵按照一定的 ...

  3. android 涂鸦之图片叠加,android图像处理系列之七--图片涂鸦,水印-图片叠加...

    图片涂鸦和水印其实是一个功能,实现的方式是一样的,就是一张大图片和一张小点图片叠加即可.前面在android图像处理系列之六--给图片添加边框(下)-图片叠加中也讲到了图片叠加,里面实现的原理是直接操 ...

  4. Android 图像处理软件

    原文出处:http://blog.csdn.net/mc_hust/article/details/43708163 在机器视觉实验室呆了有一年半时间了,但由于自己"任性".一直以 ...

  5. android动画的实现原理,Android动画的实现原理 .

    1.动画运行模式 独行模式 中断模式 2.Animation类 每个动画都重载了父类的applyTransformation方法这个方法的主要作用是把一些属性组装成一个Transformation类, ...

  6. android 版本更新原理,Android系统Recovery工作原理之使用update.zip升级过程分析(二)...

    Android系统Recovery工作原理之使用update.zip升级过程分析(二)---update.zip差分包问题的解决 在上一篇末尾提到的生成差分包时出现的问题,现已解决,由于最近比较忙,相 ...

  7. Android Handler与Looper原理简析

    一直感觉自己简直就是一个弱智,最近越来越感觉是这样了,真的希望自己有一天能够认同自己,认同自己. 本文转载于:https://juejin.im/post/59083d7fda2f60005d14ef ...

  8. Android系统Recovery工作原理之使用update.zip升级过程分析(五)

    Android系统Recovery工作原理之使用update.zip升级过程分析(五)---update.zip包从上层进入Recovery服务文章开头我们就提到update.zip包来源有两种,一个 ...

  9. 【Android架构师java原理详解】二;反射原理及动态代理模式

    前言: 本篇为Android架构师java原理专题二:反射原理及动态代理模式 大公司面试都要求我们有扎实的Java语言基础.而很多Android开发朋友这一块并不是很熟练,甚至半路初级底子很薄,这给我 ...

最新文章

  1. BZOJ 1003[ZJOI2006]物流运输(SPFA+DP)
  2. 运算放大器在超高频信号作用下的偏移量的变化
  3. xe7 Unresolved external CSPIN.OBJ
  4. Linux是否兼容windows跨区卷,简单卷与跨区卷的区别介绍
  5. python- 进阶 与flask的搭配使用---定时任务框架APScheduler学习详解
  6. python做算法分析_Python实现迪杰斯特拉算法过程解析
  7. 数组(数组名)与指针辨异
  8. 【免费】自动检测删除微信好友教程 微信一键清死粉
  9. VS2003安装步骤及其错误
  10. 电子万年历c语言全教程,单片机c语言电子万年历完整程序-20210414061741.docx-原创力文档...
  11. 【Linux】安装opencv4避坑指南
  12. 行政事业单位固定资产管理系统,资产管理系统操作手册
  13. 计算机c盘内存怎么转给d盘,C盘空间太大怎么把空间转到D盘或E盘
  14. 吸人大法!最吸引人气的网吧LOL活动策划方案,此秘籍值得收藏!
  15. android11 root、android10 root、android9 root、android8.1 root、android6.0 root user版本权限开放
  16. 三菱FX5U添加新模块
  17. 2023 爱蜗影视双端源码 附搭建教程
  18. python打印商品列表_python 列表应用-简单的购物车
  19. OUC课程评价小程序(测试报告)
  20. 排序算法——希尔排序

热门文章

  1. LRC歌词原理和实现高仿Android网易云音乐
  2. 2022危险化学品生产单位安全生产管理人员考试题库及模拟考试
  3. 有用的SAP系统管理事务码
  4. 微信小程序项目实例——手势解锁
  5. 一文理解 JWT、JWS、JWE、JWA、JWK、JOSE
  6. IE浏览器出现版本过低升级字样的解决方案
  7. linux大于3T硬盘多个分区,linux之Ubuntu挂载3T硬盘或大于2T磁盘
  8. laptop外接显示器
  9. Oracle 计算日期规避节假日
  10. 2019年—BAT大型互联网企业刚出炉的一套面试题(Java岗)