继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【App图片开发快速教程】自定义滤镜

喵喔喔
关注TA
已关注
手记 554
粉丝 103
获赞 606

配置本地滤镜资源

Android 的滤镜资源配置文件是 TuSDK.bundle/others/lsq_tusdk_configs.json,其示例和说明如下:

{
    /* 滤镜组 */
    "filterGroups": [
        {
            /* 滤镜组文件 */
            "file": "lsq_filter_Leica_1.gfilter",
            /* 滤镜组名字 */
            "name": "lsq_filter_group_Leica",
            /* 滤镜组默认滤镜 */
            "default_filter_id": 12,
            /* 滤镜名称背景色 */
            "color": "#E74C3C",
            /* 滤镜 */
            "filters": [
                {
                    /* 滤镜 id */
                    "id": 11,
                    /* 滤镜代号 */
                    "name": "lsq_filter_Brilliant",
                    /* 滤镜缩略图 */
                    "thumb": "lsq_filter_thumb_Brilliant",
                    /* 滤镜名称背景色 */
                    "color": "#E74C3C",
                    /* 滤镜参数 */
                    "args": {
                        /* 混合 */
                        "mixied": 0.5
                    }
                },
                { "id": 12, "name": "lsq_filter_Leica" },
                { "id": 13, "name": "lsq_filter_Gloss" },
                { "id": 14, "name": "lsq_filter_Harmony" },
                { "id": 15, "name": "lsq_filter_Noir" }
            ]
        },
        {
            "file": "lsq_filter_Beauty_6.gfilter",
            "default_filter_id": 65,
            "filters": [
                { "id": 61, "name": "lsq_filter_SkinNature" },
                { "id": 62, "name": "lsq_filter_SkinPink" },
                { "id": 63, "name": "lsq_filter_SkinJelly" },
                { "id": 64, "name": "lsq_filter_SkinNoir" },
                { "id": 65, "name": "lsq_filter_SkinRuddy" },
                { "id": 66, "name": "lsq_filter_SkinPowder" },
                { "id": 67, "name": "lsq_filter_SkinSugar" }
            ]
        }
    ]
}

更改滤镜显示名称

可以更改滤镜在滤镜栏上的显示名称,找到 TuSDK/res/values/strings.xml 文件,修改对应的名称即可。

建议用户 将此文件复制到自己的项目下进行修改,以免将来升级SDK时被覆盖。

更改滤镜列表项顺序

调整 TuSDK.bundle/others/lsq_tusdk_configs.json 文件中元素的顺序即可。

更换滤镜效果图

更换滤镜效果图分为更换第一级的滤镜效果图和更换第二级的滤镜效果图,第一级滤镜效果图相当于一组滤镜的封面效果图,第二级滤镜效果图指滤镜组中单个滤镜的效果图。

修改第一级的滤镜效果图

将所需要的效果图保存为 240 * 240 的 JPG 放入工程,并更改 TuSDK.bundle/others/lsq_tusdk_configs.json 文件中 default_filter_id 字段对应滤镜的 thumb 字段。

以修改人像滤镜组的封面、也即是第一级的效果图为例,人像滤镜的配置如下:

        {
            "file": "lsq_filter_Beauty_6.gfilter",
            "name": "lsq_filter_group_Beauty",
            "default_filter_id": 65,
            "filters": [
                { "id": 61, "name": "lsq_filter_SkinNature", "args": { "smoothing": 0.3 } },
                { "id": 62, "name": "lsq_filter_SkinPink", "args": { "smoothing": 0.5, "mixied": 0.3 } },
                { "id": 63, "name": "lsq_filter_SkinJelly", "args": { "smoothing": 0.6, "mixied": 0.4 } },
                { "id": 64, "name": "lsq_filter_SkinNoir", "args": { "smoothing": 0.5, "mixied": 1.0 } },
                { "id": 65, "name": "lsq_filter_SkinRuddy", "args": { "smoothing": 0.45, "mixied": 0.25 } },
                { "id": 66, "name": "lsq_filter_SkinSugar", "args": { "smoothing": 0.6, "mixied": 0.3 } },
                { "id": 67, "name": "lsq_filter_SkinPowder", "args": { "smoothing": 0.45, "mixied": 0.4 } }
            ]
        }

default_filter_id 字段对应的滤镜 id 为 65,因此需要更改 name 字段为 lsq_filter_SkinRuddy 的滤镜,将该滤镜的 thumb 字段指定为用户自己的图片即可:

{ "id": 65, "name": "lsq_filter_SkinRuddy", "args": { "smoothing": 0.45, "mixied": 0.25 }, "thumb": "your_pic_name" }

修改第二级的滤镜效果图

将所需要的效果图保存为 240 * 240 的 JPG 放入工程,并更改 TuSDK.bundle/others/lsq_tusdk_configs.json 文件中相关的 thumb 字段。

使用部分滤镜

使用配置文件的方式

删除 TuSDK.bundle/others/lsq_tusdk_configs.json 文件中的元素,同时删除 TuSDK.bundle/textures 目录下的相关文件。

使用代码动态改变

使用代码方式动态设置滤镜的显示比使用配置文件的方式更加灵活,用户需要给出要显示的滤镜的名称即可。

  • 在相机中使用部分滤镜

 TuCameraOption option = new TuCameraOption();

 // 需要显示的滤镜名称列表 (如果为空将显示所有自定义滤镜, 可选)
 String[] filters = {
 "SkinNature", "SkinPink", "SkinJelly", "SkinNoir", "SkinRuddy", "SkinPowder", "SkinSugar"};

 option.setFilterGroup(Arrays.asList(filters));
  • 在多功能编辑组件中使用部分滤镜

 // 需要显示的滤镜名称列表 (如果为空将显示所有自定义滤镜, 可选)
 String[] filters = {
 "SkinNature", "SkinPink", "SkinJelly", "SkinNoir", "SkinRuddy", "SkinPowder", "SkinSugar"};

 component.componentOption().editFilterOption().setFilterGroup(Arrays.asList(filters));

获取滤镜名称

滤镜的名称可以在 TuSDK.bundle/others/lsq_tusdk_configs.json 文件中获得,在该文件中滤镜列表的层次结构如下所示:

filterGroups[] -> filters[] -> name:lsq_filter_%{Brilliant}
  • filterGroups[] 指用户所拥有的所有滤镜组;

  • filters[] 指滤镜组中的其中一组;

  • name:lsq_filter_%{Brilliant} 指的是一组中具体某个滤镜的代号,而滤镜的名称就从这个代号里面取得。

比如对于 lsq_filter_Brilliant 这个滤镜代号来说,滤镜名称就是 Brilliant,因此用户只需把 Brilliant这个字符串放到一个字符串数组中并传给设置滤镜的代码即可。

原文链接:http://www.apkbus.com/blog-918768-68566.html

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP