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); // 美白强度
注意事项
- 参数范围: 所有美颜参数的值范围都是 0.0 - 1.0
- 初始化顺序: 必须先初始化PixelFree,再加载认证文件和滤镜模型
- 文件路径: 确保所有资源文件路径正确
- 错误处理: 建议对所有API调用进行异常处理
- 性能优化: 避免频繁调用API,可以批量设置参数
常见问题
Q: 美颜效果不明显?
A: 检查参数值是否设置正确,确保滤镜模型文件已正确加载。
Q: 贴纸不显示?
A: 确认贴纸文件路径正确,type参数设置为3。
Q: 滤镜没有效果?
A: 确保滤镜名称正确,滤镜强度设置合理。
Q: 初始化失败?
A: 检查认证文件是否正确,包名是否匹配。
如需更详细的 API 说明,请参考https://github.com/uu-code007/PixelFreeEffects