本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
最近这段时间像素风的特效非常受欢迎,无论是在图像还是视频中都都可以带来复古的感觉,所以大部分美颜特效SDK都纷纷开始加入实现像素化风格的功能。其实像素风与马赛克的实现是比较差不多的,接下来就跟大家简单分享下相关内容。 在美颜特效SDK中加入像素风功能时,需要用到马赛克算法,什么是马赛克算法?如何实现? 1.马赛克算法需要先确定马赛克单元的大小,即小方块的大小。 2.马赛克图的每个马赛克单元都是纯色的块,其中取值一般都是原图中该区域的颜色均值。 3.马赛克单元的大小决定了最后马赛克图的样子。 加入马赛克算法给用户带来了什么呢? 1.增强用户美颜体验 开发者在开发美颜特效SDK时的最终目的,其实还是归于用户的美颜体验这部分。因为对于美颜特效SDK来讲,其中所包含的功能越多、越全面,所带来的美颜体验就越高。再加上像素化风格的流行迎合了现阶段用户喜好,所以在增强用户美颜体验上具备一定优势。 2.提升APP平台流量 前面说到像素风的流行受到了大众的喜爱,所以很多开发者都在开发美颜特效SDK时添加了像素风功能。由于受到了用户喜爱,APP平台的流量自然会得到一定程度的提升,这对于运营者来说也是非常必要的,毕竟接入使用SDK就是为了引流,只有引流才会有机会实现变现。 关于马赛克算法(像素风功能)的部分参考代码 public classPixelateUtil { / 普通图像->像素图,zoneWidth为像素图的大像素的宽度 / public static Bitmap pixelate(Bitmapbitmap, int zoneWidth) { return pixelate(bitmap, zoneWidth, 0,0, bitmap.getWidth(), bitmap.getHeight()); } / 普通图->像素图,left、top、right、bottom可指定打马赛克区域 / public static Bitmap pixelate(Bitmapbitmap, 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; } } 总的来看,无论在美颜特效SDK中添加怎样的功能,最终的核心目标都是以用户为主。如果功能无法给用户带来较好的美颜体验,那么就没有意义了。但是由于开发技术和团队不同,所实现的特效和功能都有所不同,所以建议找专业的团队进行。 声明:以上内容均为作者本人原创,转载需注明作者及原文链接,欢迎转载分享。
|