前言
像素化(Pixelization),又称马赛克,是图像处理中非常常见的技术,现阶段已经成为了一种创作手段。本文首先会讲解像素化的实现原理,接着会给出Java版的实现,最后介绍马赛克相关的开源项目。
算法介绍
马赛克算法首先需要确定马赛克单元的大小,即小方块的大小。马赛克图的每个马赛克单元都是纯色的块,其取值一般为原图中该块区域的颜色的均值(这里的实现为了简化,取了原图中该区域左上角的像素)。马赛克单元的大小决定了最后的马赛克图的样子,当值为1时,就是原图。
上图中,最左边的图是原图,中间的图是马赛克图。当然你也可以对图像的某块区域打马赛克,如最右边的图,他只对头部打马赛克。
算法实现如下:
|
使用方法:
|
开源项目
Pixelate是实现基本马赛克效果的开源项目,它能够异步对整个或者部分的Bitmap区域打马赛克,处理完后会在OnPixelateListener的onPixelated()中回调,最小的SDK版本为16。
使用方法如下:
|
android-close-pixelate能够实现多样式的马赛克效果。使用方法如下:
|
效果如下: