作者:夏正冬
博客地址:xiazdong.github.io
马赛克算法首先需要确定马赛克单元的大小,即小方块的大小。马赛克图的每个马赛克单元都是纯色的块,其取值一般为原图中该块区域的颜色的均值(这里的实现为了简化,取了原图中该区域左上角的像素)。马赛克单元的大小决定了最后的马赛克图的样子,当值为1时,就是原图。
上图中,最左边的图是原图,中间的图是马赛克图。当然你也可以对图像的某块区域打马赛克,如最右边的图,他只对头部打马赛克。
算法实现如下:
public class PixelateUtil {
使用方法:
Bitmap result = PixelateUtil.pixelate(bitmap, zoneWidth)
Pixelate是实现基本马赛克效果的开源项目,它能够异步对整个或者部分的Bitmap区域打马赛克,处理完后会在OnPixelateListener的onPixelated()中回调,最小的SDK版本为16。
使用方法如下:
new Pixelate(origin)
.setArea(0,0,origin.getWidth(),origin.getHeight())
android-close-pixelate能够实现多样式的马赛克效果。使用方法如下:
Bitmap pixelated = Pixelate.fromBitmap(
origin,
new PixelateLayer.Builder(PixelateLayer.Shape.Circle)
效果如下:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。