美颜特效SDK中实现像素化风格很复杂吗

[复制链接]
查看: 44|回复: 0
发表于 2019-11-4 17:10:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
最近这段时间像素风的特效非常受欢迎,无论是在图像还是视频中都都可以带来复古的感觉,所以大部分美颜特效SDK都纷纷开始加入实现像素化风格的功能。其实像素风与马赛克的实现是比较差不多的,接下来就跟大家简单分享下相关内容。
美颜sdk7.png
在美颜特效SDK中加入像素风功能时,需要用到马赛克算法,什么是马赛克算法?如何实现?
1.马赛克算法需要先确定马赛克单元的大小,即小方块的大小。
2.马赛克图的每个马赛克单元都是纯色的块,其中取值一般都是原图中该区域的颜色均值。
3.马赛克单元的大小决定了最后马赛克图的样子。
加入马赛克算法给用户带来了什么呢?
1.增强用户美颜体验
开发者在开发美颜特效SDK时的最终目的,其实还是归于用户的美颜体验这部分。因为对于美颜特效SDK来讲,其中所包含的功能越多、越全面,所带来的美颜体验就越高。再加上像素化风格的流行迎合了现阶段用户喜好,所以在增强用户美颜体验上具备一定优势。
美颜sdk14.png
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;
    }
}
美颜sdk9.png
总的来看,无论在美颜特效SDK中添加怎样的功能,最终的核心目标都是以用户为主。如果功能无法给用户带来较好的美颜体验,那么就没有意义了。但是由于开发技术和团队不同,所实现的特效和功能都有所不同,所以建议找专业的团队进行。
声明:以上内容均为作者本人原创,转载需注明作者及原文链接,欢迎转载分享。
高级模式
B Color Image Link Quote Code Smilies

本版积分规则

友情链接
 
 
工作时间:
8:00-18:00
客服热线:
15368564009
客服微信