我正在开发一个照片编辑扩展程序,希望它能够将有关所做更改的信息保存到PHAdjustmentData中,以便用户以后可以修改这些更改。我将所有必需的数据保存到PHAdjustmentData中,但是,下次我编辑图像时-PHAdjustmentData为零。
这是一个示例代码:

@property (strong, nonatomic) PHContentEditingOutput *output;

- (void)startContentEditingWithInput:(PHContentEditingInput *)contentEditingInput placeholderImage:(UIImage *)placeholderImage
{
    self.output = [[PHContentEditingOutput alloc] initWithContentEditingInput:contentEditingInput];

    // here contentEditingInput.adjustmentData is always nil
}

- (void)finishContentEditingWithCompletionHandler:(void (^)(PHContentEditingOutput *))completionHandler
{
    NSMutableDictionary *dict = [NSMutableDictionary dictionary];
    [dict setObject:@"value1" forKey:@"key1"];
    [dict setObject:@"value2" forKey:@"key2"];
    NSData *adjData = [NSKeyedArchiver archivedDataWithRootObject:dict];
    PHAdjustmentData *phAdjData = [[PHAdjustmentData alloc] initWithFormatIdentifier:@"ident" formatVersion:@"1.0" data:adjData];
    self.output.adjustmentData = phAdjData;

    NSData *data = UIImageJPEGRepresentation(result, 1.0);
    [data writeToURL:self.output.renderedContentURL options:NSDataWritingAtomic error:nil];

    completionHandler(self.output);
}

如何正确保存调整数据,以便下次用户编辑图像时可以访问它?谢谢!

最佳答案

仅当您同意处理该数据时,PhotoKit才会以startContentEditingWithInput提供调整数据。您同意通过实现 canHandleAdjustmentData 来检查格式标识符和调整版本,然后针对可以处理的格式返回true。

如果您从canHandleAdjustmentData返回false,那么您将在startContentEditingWithInput中获得零调整数据。不仅如此,您还将获得照片图像的预编辑版本,因此无法处理上次编辑之前的外观。

10-08 06:06