以下函数加载一张照片,编辑附加到它的 exif 元数据并将其保存回来。该功能似乎只适用于已经附加了 PHAdjustmentData 的照片,即之前使用其他应用程序编辑过的照片。如果照片尚未编辑,它会在 performChanges() 块中失败并打印
Failed to save. Error: Optional(Error Domain=NSCocoaErrorDomain Code=-1 "(null)").
Run Code Online (Sandbox Code Playgroud)
为什么在这种情况下会失败?查看 Stack Overflow 我已经看到了这个问题的许多其他版本,但似乎没有一个得到解决。我知道如果保存的图像是 PNG 但我的原始图像是 JPEG,因此保存的图像也是 JPEG,这将失败。
func editPhotoProperties(_ asset: PHAsset) {
let options = PHContentEditingInputRequestOptions()
options.canHandleAdjustmentData = { data in
return false
}
asset.requestContentEditingInput(with: options) { input, info in
if let input = input {
let adjustmentData = PHAdjustmentData(formatIdentifier:"viewfinder", formatVersion:"1.0", data:"viewfinder".data(using:.utf8)!)
let output = PHContentEditingOutput(contentEditingInput:input)
output.adjustmentData = adjustmentData
do {
let imageData = try Data(contentsOf:input.fullSizeImageURL!)
} catch {
print("Failed to load data")
return …
Run Code Online (Sandbox Code Playgroud)