PixelFree agora美颜插件 android 原生集成指南

PixelFree API 使用指南

概述

本文档详细说明PixelFree Android扩展的API使用方法。

基础设置

1. 初始化PixelFree

// 初始化PixelFree引擎
JSONObject jsonObject = new JSONObject();
jsonObject.put("data", "");
setExtensionProperty("pfNewPixelFree", jsonObject.toString());

2. 加载认证文件

// 加载PixelFree认证文件
File authFile = new File(getExternalFilesDir("assets"), "pixelfreeAuth.lic");
JSONObject jsonObject = new JSONObject();
jsonObject.put("data", authFile.getAbsolutePath());
jsonObject.put("type", 2); // PF_BUNDLE_TYPE_AUTH
setExtensionProperty("pfCreateBeautyItemFromBundle", jsonObject.toString());

3. 加载滤镜模型

// 加载滤镜模型文件
File filterModel = new File(getExternalFilesDir("assets"), "filter_model.bundle");
JSONObject jsonObject = new JSONObject();
jsonObject.put("data", filterModel.getAbsolutePath());
jsonObject.put("type", 0); // PF_BUNDLE_TYPE_FILTER
setExtensionProperty("pfCreateBeautyItemFromBundle", jsonObject.toString());

美颜参数设置

基础美颜参数

1. 眼部强度 (Eye Strength)

JSONObject jsonObject = new JSONObject();
jsonObject.put("value", 0.5); // 0.0 - 1.0
jsonObject.put("key", 0); // PFBeautyFilterTypeFace_EyeStrength
setExtensionProperty("pfSetBeautyFilterParam", jsonObject.toString());

2. 瘦脸 (Face Thinning)

JSONObject jsonObject = new JSONObject();
jsonObject.put("value", 0.3); // 0.0 - 1.0
jsonObject.put("key", 1); // PFBeautyFilterTypeFace_thinning
setExtensionProperty("pfSetBeautyFilterParam", jsonObject.toString());

3. 窄脸 (Face Narrow)

JSONObject jsonObject = new JSONObject();
jsonObject.put("value", 0.4); // 0.0 - 1.0
jsonObject.put("key", 2); // PFBeautyFilterTypeFace_narrow
setExtensionProperty("pfSetBeautyFilterParam", jsonObject.toString());

4. 下巴 (Face Chin)

JSONObject jsonObject = new JSONObject();
jsonObject.put("value", 0.2); // 0.0 - 1.0
jsonObject.put("key", 3); // PFBeautyFilterTypeFace_chin
setExtensionProperty("pfSetBeautyFilterParam", jsonObject.toString());

5. V脸 (Face V)

JSONObject jsonObject = new JSONObject();
jsonObject.put("value", 0.3); // 0.0 - 1.0
jsonObject.put("key", 4); // PFBeautyFilterTypeFace_V
setExtensionProperty("pfSetBeautyFilterParam", jsonObject.toString());

6. 小脸 (Face Small)

JSONObject jsonObject = new JSONObject();
jsonObject.put("value", 0.4); // 0.0 - 1.0
jsonObject.put("key", 5); // PFBeautyFilterTypeFace_small
setExtensionProperty("pfSetBeautyFilterParam", jsonObject.toString());

7. 鼻子 (Face Nose)

JSONObject jsonObject = new JSONObject();
jsonObject.put("value", 0.2); // 0.0 - 1.0
jsonObject.put("key", 6); // PFBeautyFilterTypeFace_nose
setExtensionProperty("pfSetBeautyFilterParam", jsonObject.toString());

8. 额头 (Face Forehead)

JSONObject jsonObject = new JSONObject();
jsonObject.put("value", 0.1); // 0.0 - 1.0
jsonObject.put("key", 7); // PFBeautyFilterTypeFace_forehead
setExtensionProperty("pfSetBeautyFilterParam", jsonObject.toString());

9. 嘴巴 (Face Mouth)

JSONObject jsonObject = new JSONObject();
jsonObject.put("value", 0.2); // 0.0 - 1.0
jsonObject.put("key", 8); // PFBeautyFilterTypeFace_mouth
setExtensionProperty("pfSetBeautyFilterParam", jsonObject.toString());

10. 人中 (Face Philtrum)

JSONObject jsonObject = new JSONObject();
jsonObject.put("value", 0.1); // 0.0 - 1.0
jsonObject.put("key", 9); // PFBeautyFilterTypeFace_philtrum
setExtensionProperty("pfSetBeautyFilterParam", jsonObject.toString());

11. 长鼻 (Face Long Nose)

JSONObject jsonObject = new JSONObject();
jsonObject.put("value", 0.2); // 0.0 - 1.0
jsonObject.put("key", 10); // PFBeautyFilterTypeFace_long_nose
setExtensionProperty("pfSetBeautyFilterParam", jsonObject.toString());

12. 眼距 (Face Eye Space)

JSONObject jsonObject = new JSONObject();
jsonObject.put("value", 0.1); // 0.0 - 1.0
jsonObject.put("key", 11); // PFBeautyFilterTypeFace_eye_space
setExtensionProperty("pfSetBeautyFilterParam", jsonObject.toString());

13. 微笑 (Face Smile)

JSONObject jsonObject = new JSONObject();
jsonObject.put("value", 0.3); // 0.0 - 1.0
jsonObject.put("key", 12); // PFBeautyFilterTypeFace_smile
setExtensionProperty("pfSetBeautyFilterParam", jsonObject.toString());

14. 眼旋转 (Face Eye Rotate)

JSONObject jsonObject = new JSONObject();
jsonObject.put("value", 0.1); // 0.0 - 1.0
jsonObject.put("key", 13); // PFBeautyFilterTypeFace_eye_rotate
setExtensionProperty("pfSetBeautyFilterParam", jsonObject.toString());

15. 眼角 (Face Canthus)

JSONObject jsonObject = new JSONObject();
jsonObject.put("value", 0.2); // 0.0 - 1.0
jsonObject.put("key", 14); // PFBeautyFilterTypeFace_canthus
setExtensionProperty("pfSetBeautyFilterParam", jsonObject.toString());

皮肤美颜参数

16. 红润强度 (Ruddy Strength)

JSONObject jsonObject = new JSONObject();
jsonObject.put("value", 0.3); // 0.0 - 1.0
jsonObject.put("key", 15); // PFBeautyFilterTypeFaceRuddyStrength
setExtensionProperty("pfSetBeautyFilterParam", jsonObject.toString());

17. 美白强度 (Whiten Strength)

JSONObject jsonObject = new JSONObject();
jsonObject.put("value", 0.4); // 0.0 - 1.0
jsonObject.put("key", 16); // PFBeautyFilterTypeFaceM_newWhitenStrength
setExtensionProperty("pfSetBeautyFilterParam", jsonObject.toString());

18. 模糊强度 (Blur Strength)

JSONObject jsonObject = new JSONObject();
jsonObject.put("value", 0.2); // 0.0 - 1.0
jsonObject.put("key", 17); // PFBeautyFilterTypeFaceBlurStrength
setExtensionProperty("pfSetBeautyFilterParam", jsonObject.toString());

19. 锐化强度 (Sharpen Strength)

JSONObject jsonObject = new JSONObject();
jsonObject.put("value", 0.1); // 0.0 - 1.0
jsonObject.put("key", 18); // PFBeautyFilterTypeFaceSharpenStrength
setExtensionProperty("pfSetBeautyFilterParam", jsonObject.toString());

20. 眼部提亮 (Eye Brighten)

JSONObject jsonObject = new JSONObject();
jsonObject.put("value", 0.3); // 0.0 - 1.0
jsonObject.put("key", 19); // PFBeautyFilterTypeFaceEyeBrighten
setExtensionProperty("pfSetBeautyFilterParam", jsonObject.toString());

21. 高清强度 (Quality Strength)

JSONObject jsonObject = new JSONObject();
jsonObject.put("value", 0.2); // 0.0 - 1.0
jsonObject.put("key", 20); // PFBeautyFilterTypeFaceH_qualityStrength
setExtensionProperty("pfSetBeautyFilterParam", jsonObject.toString());

滤镜设置

设置滤镜名称

JSONObject jsonObject = new JSONObject();
jsonObject.put("value", "ziran2"); // 滤镜名称
jsonObject.put("key", 21); // PFBeautyFilterName
setExtensionProperty("pfSetBeautyFilterParam", jsonObject.toString());

设置滤镜强度

JSONObject jsonObject = new JSONObject();
jsonObject.put("value", 0.8); // 0.0 - 1.0
jsonObject.put("key", 22); // PFBeautyFilterStrength
setExtensionProperty("pfSetBeautyFilterParam", jsonObject.toString());

贴纸设置

移除贴纸

JSONObject jsonObject = new JSONObject();
jsonObject.put("data", "");
jsonObject.put("type", 3); // PF_BUNDLE_TYPE_STICKER
setExtensionProperty("pfCreateBeautyItemFromBundle", jsonObject.toString());

添加贴纸

File stickerFile = new File(getExternalFilesDir("assets"), "Resource/items/ItemSticker/CatSparks.bundle");
JSONObject jsonObject = new JSONObject();
jsonObject.put("data", stickerFile.getAbsolutePath());
jsonObject.put("type", 3); // PF_BUNDLE_TYPE_STICKER
setExtensionProperty("pfCreateBeautyItemFromBundle", jsonObject.toString());

一键美颜设置

原始 (Normal)

JSONObject jsonObject = new JSONObject();
jsonObject.put("value", 0); // PFBeautyTypeOneKeyNormal
jsonObject.put("key", 23); // PFBeautyFilterTypeOneKey
setExtensionProperty("pfSetBeautyFilterParam", jsonObject.toString());

自然 (Natural)

JSONObject jsonObject = new JSONObject();
jsonObject.put("value", 1); // PFBeautyTypeOneKeyNatural
jsonObject.put("key", 23); // PFBeautyFilterTypeOneKey
setExtensionProperty("pfSetBeautyFilterParam", jsonObject.toString());

可爱 (Cute)

JSONObject jsonObject = new JSONObject();
jsonObject.put("value", 2); // PFBeautyTypeOneKeyCute
jsonObject.put("key", 23); // PFBeautyFilterTypeOneKey
setExtensionProperty("pfSetBeautyFilterParam", jsonObject.toString());

女神 (Goddess)

JSONObject jsonObject = new JSONObject();
jsonObject.put("value", 3); // PFBeautyTypeOneKeyGoddess
jsonObject.put("key", 23); // PFBeautyFilterTypeOneKey
setExtensionProperty("pfSetBeautyFilterParam", jsonObject.toString());

白净 (Fair)

JSONObject jsonObject = new JSONObject();
jsonObject.put("value", 4); // PFBeautyTypeOneKeyFair
jsonObject.put("key", 23); // PFBeautyFilterTypeOneKey
setExtensionProperty("pfSetBeautyFilterParam", jsonObject.toString());

完整示例

初始化完整流程

private void initPixelFree() {
    try {
        // 1. 初始化PixelFree
        JSONObject initJson = new JSONObject();
        initJson.put("data", "");
        setExtensionProperty("pfNewPixelFree", initJson.toString());
        
        // 2. 加载认证文件
        File authFile = new File(getExternalFilesDir("assets"), "pixelfreeAuth.lic");
        JSONObject authJson = new JSONObject();
        authJson.put("data", authFile.getAbsolutePath());
        authJson.put("type", 2);
        setExtensionProperty("pfCreateBeautyItemFromBundle", authJson.toString());
        
        // 3. 加载滤镜模型
        File filterModel = new File(getExternalFilesDir("assets"), "filter_model.bundle");
        JSONObject filterJson = new JSONObject();
        filterJson.put("data", filterModel.getAbsolutePath());
        filterJson.put("type", 0);
        setExtensionProperty("pfCreateBeautyItemFromBundle", filterJson.toString());
        
        // 4. 设置默认滤镜强度
        JSONObject strengthJson = new JSONObject();
        strengthJson.put("value", 0.9);
        strengthJson.put("key", 22); // PFBeautyFilterStrength
        setExtensionProperty("pfSetBeautyFilterParam", strengthJson.toString());
        
    } catch (JSONException e) {
        Log.e(TAG, "Init PixelFree failed: " + e.toString());
    }
}

设置美颜参数示例

private void setBeautyParam(int paramType, float value) {
    try {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("value", value);
        jsonObject.put("key", paramType);
        setExtensionProperty("pfSetBeautyFilterParam", jsonObject.toString());
    } catch (JSONException e) {
        Log.e(TAG, "Set beauty param failed: " + e.toString());
    }
}

// 使用示例
setBeautyParam(0, 0.5f);  // 眼部强度
setBeautyParam(1, 0.3f);  // 瘦脸
setBeautyParam(15, 0.4f); // 红润强度
setBeautyParam(16, 0.6f); // 美白强度

注意事项

  1. 参数范围: 所有美颜参数的值范围都是 0.0 - 1.0
  2. 初始化顺序: 必须先初始化PixelFree,再加载认证文件和滤镜模型
  3. 文件路径: 确保所有资源文件路径正确
  4. 错误处理: 建议对所有API调用进行异常处理
  5. 性能优化: 避免频繁调用API,可以批量设置参数

常见问题

Q: 美颜效果不明显?

A: 检查参数值是否设置正确,确保滤镜模型文件已正确加载。

Q: 贴纸不显示?

A: 确认贴纸文件路径正确,type参数设置为3。

Q: 滤镜没有效果?

A: 确保滤镜名称正确,滤镜强度设置合理。

Q: 初始化失败?

A: 检查认证文件是否正确,包名是否匹配。


如需更详细的 API 说明,请参考https://github.com/uu-code007/PixelFreeEffects

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容