123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237 |
- //
- // BDFaceAdjustParamsFileManager.m
- // FaceSDKSample_IOS
- //
- // Created by Zhang,Jian(MBD) on 2020/12/1.
- // Copyright © 2020 Baidu. All rights reserved.
- //
- #import "BDFaceAdjustParamsFileManager.h"
- #import "BDFaceAdjustParams.h"
- #import "BDFaceCalculateTool.h"
- #import "BDFaceAdjustParams.h"
- #import "BDFaceAdjustParamsTool.h"
- static NSString *const BDFaceAdjustConfigFileName = @"BDFaceParamsConfig";
- static NSString *const BDFaceAdjustConfigFileSurfix = @"json";
- static NSString *const BDFaceAdjustConfigCustomFileName = @"BDFaceParamsConfigCache.plist";
- static NSString *const BDFaceAjustParamsNormalPageJsonKey = @"normal";
- static NSString *const BDFaceAjustParamsLoosePageJsonKey = @"loose";
- static NSString *const BDFaceAjustParamsStrictPageJsonKey = @"strict";
- static NSString *const BDFaceParamsConfigCacheForCustomConfigDicKey = @"BDFaceParamsConfigCacheForCustomConfigDicKey"; /// 保存的自定义参数的key
- static NSString *const BDFaceParamsConfigCacheForUserSelectKey = @"BDFaceParamsConfigCacheForUserSelectKey"; /// select key
- @interface BDFaceAdjustParamsFileManager()
- @end
- @implementation BDFaceAdjustParamsFileManager
- + (instancetype)sharedInstance {
- static BDFaceAdjustParamsFileManager *instance = nil;
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- instance = [[BDFaceAdjustParamsFileManager alloc] init];
- });
- return instance;
- }
- - (instancetype)init {
- self = [super init];
- if (self) {
- [self loadConfigFile];
- [self readCustomCongfig];
- [self createCachePlist];
- }
- return self;
- }
- /// 读取配置文件
- - (void)loadConfigFile {
- NSString *path = [[NSBundle mainBundle] pathForResource:BDFaceAdjustConfigFileName ofType:BDFaceAdjustConfigFileSurfix];
- NSDictionary *dic = nil;
- @try {
- NSData *data = [[NSData alloc] initWithContentsOfFile:path];
- dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
- if (dic && [dic isKindOfClass:[NSDictionary class]]) {
- NSDictionary *normal = dic[BDFaceAjustParamsNormalPageJsonKey];
- NSDictionary *loose = dic[BDFaceAjustParamsLoosePageJsonKey];
- NSDictionary *strict = dic[BDFaceAjustParamsStrictPageJsonKey];
- _normalConfig = [[BDFaceAdjustParams alloc] initWithDic:normal];
- _looseConfig = [[BDFaceAdjustParams alloc] initWithDic:loose];
- _strictConfig = [[BDFaceAdjustParams alloc] initWithDic:strict];
- }
- }@catch (NSException *exception) {
- dic = nil;
- _normalConfig = nil;
- _looseConfig = nil;
- _strictConfig = nil;
- } @finally {
-
- }
- }
- /// 创建缓存文件
- - (void)createCachePlist {
- NSFileManager *fileManager = [NSFileManager defaultManager];
- NSMutableDictionary *desDic;
- NSString *path = [self.class cacheConfigFilePath];
- if (![fileManager fileExistsAtPath:path]) {
- desDic = [[NSMutableDictionary alloc] init];
- [desDic writeToFile:path atomically:YES];
- }
- }
- + (NSString *)cacheConfigFilePath {
- NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
- NSString *documentsDirectory = [paths objectAtIndex:0];
- NSString *path = [documentsDirectory stringByAppendingPathComponent:BDFaceAdjustConfigCustomFileName];
- return path;
- }
- - (NSString *)numberString:(float)value {
- NSString *str = [NSString stringWithFormat:@"%0.2f", value];
- return [NSString stringWithFormat:@"%@", @(str.floatValue)];
- }
- - (void)setSelectType:(BDFaceSelectType)selectType {
- if (_selectType != selectType) {
- _selectType = selectType;
- [self saveUserSelection:selectType];
- }
- }
- - (BDFaceAdjustParams *)readCustomCongfig {
- BDFaceAdjustParams *config = nil;
- NSDictionary *dic = [[NSDictionary alloc] initWithContentsOfFile:[self.class cacheConfigFilePath]];
- if ([BDFaceCalculateTool noNullDic:dic]) {
- NSDictionary *customDic = dic[BDFaceParamsConfigCacheForCustomConfigDicKey];
- if ([BDFaceCalculateTool noNullDic:customDic]) {
- config = [[BDFaceAdjustParams alloc] initWithDic:customDic];
- }
- }
- if (config == nil) {
- config = [self.normalConfig copy];
- }
- _customConfig = config;
- return config;
- }
- /// 持久化自定义文件
- - (void)saveToCustomConfigFile:(BDFaceAdjustParams *)config {
- _customConfig = [config copy];
- NSDictionary *dic = config.toDic;
- [self createCachePlist];
- NSDictionary *beforeDic = [[NSDictionary alloc] initWithContentsOfFile:[self.class cacheConfigFilePath]];
- NSMutableDictionary *muDic = nil;
- if (beforeDic) {
- muDic = [NSMutableDictionary dictionaryWithDictionary:beforeDic];
- [muDic setValue:dic forKey:BDFaceParamsConfigCacheForCustomConfigDicKey];
- } else {
- muDic = [NSMutableDictionary dictionary];
- [muDic setValue:dic forKey:BDFaceParamsConfigCacheForCustomConfigDicKey];
- }
- if ([BDFaceCalculateTool noNullDic:muDic]) {
- @try {
- [muDic writeToFile:[self.class cacheConfigFilePath] atomically:NO];
- } @catch (NSException *exception) {
- [muDic writeToFile:[self.class cacheConfigFilePath] atomically:YES];
- } @finally {
-
- }
-
- }
- }
- + (BDFaceSelectType)readCacheSelect {
- NSString *select = nil;
- BDFaceSelectType selectType;
- NSDictionary *dic = [[NSDictionary alloc] initWithContentsOfFile:[self.class cacheConfigFilePath]];
- if ([BDFaceCalculateTool noNullDic:dic]) {
- select = dic[BDFaceParamsConfigCacheForUserSelectKey];
- }
- if (select) {
- selectType = select.integerValue;
- } else {
- selectType = BDFaceSelectTypeNormal;
- }
- return selectType;
- }
- + (NSString *)currentSelectionText {
- BDFaceSelectType type = [BDFaceAdjustParamsFileManager readCacheSelect];
- NSString *text = @"";
- switch (type) {
- case BDFaceSelectTypeLoose:
- {
- text = @"宽松";
- }
- break;
- case BDFaceSelectTypeNormal:
- {
- text = @"正常";
- }
- break;
- case BDFaceSelectTypeStrict:
- {
- text = @"严格";
- }
- break;
- case BDFaceSelectTypeCustom:
- {
- text = @"自定义";
- }
- break;
-
- default:
- break;
- }
- return text;
- }
- - (void)saveUserSelection:(BDFaceSelectType)select {
- [self createCachePlist];
- NSDictionary *dic = [[NSDictionary alloc] initWithContentsOfFile:[self.class cacheConfigFilePath]];
- NSMutableDictionary *muDic = nil;
- if (dic) {
- muDic = [NSMutableDictionary dictionaryWithDictionary:dic];
- [muDic setValue:[NSString stringWithFormat:@"%d", (int)select] forKey:BDFaceParamsConfigCacheForUserSelectKey];
- } else {
- muDic = [NSMutableDictionary dictionary];
- [muDic setValue:[NSString stringWithFormat:@"%d", (int)select] forKey:BDFaceParamsConfigCacheForUserSelectKey];
- }
- if ([BDFaceCalculateTool noNullDic:muDic]) {
- [muDic writeToFile:[self.class cacheConfigFilePath] atomically:YES];
- }
- }
- - (BDFaceAdjustParams *)configBySelection:(BDFaceSelectType)type {
- BDFaceAdjustParams *params = [BDFaceAdjustParamsFileManager sharedInstance].normalConfig;
- switch (type) {
- case BDFaceSelectTypeLoose:
- {
- params = self.looseConfig;
- }
- break;
- case BDFaceSelectTypeStrict:
- {
- params = self.strictConfig;
- }
- break;
- case BDFaceSelectTypeCustom:
- {
- params = self.customConfig;
- }
- break;
-
- default:
- break;
- }
- return params;
- }
- @end
|