Interpretieren Sie XMP-Metadaten in ALAssetRepresentation

Wenn ein Benutzer einige Änderungen (Zuschneiden, Entfernen roter Augen, ...) an den Fotos in der integrierten Funktion vornimmtPhotos.app Unter iOS werden die Änderungen nicht auf die angewendetfullResolutionImage vom entsprechenden zurückgegebenALAssetRepresentation.

Die Änderungen werden jedoch auf die angewendetthumbnail und dasfullScreenImage zurückgegeben von derALAssetRepresentation. Informationen zu den vorgenommenen Änderungen finden Sie imALAssetRepresentation's Metadaten-Wörterbuch über den Schlüssel@"AdjustmentXMP".

Ich möchte diese Änderungen auf die anwendenfullResolutionImage mich, um die Konsistenz zu bewahren. Ich habe das am herausgefundeniOS6 + CIFilter'sfilterArrayFromSerializedXMP: inputImageExtent:error: kann diese XMP-Metadaten in ein Array von konvertierenCIFilters:

ALAssetRepresentation *rep; 
NSString *xmpString = rep.metadata[@"AdjustmentXMP"];
NSData *xmpData = [xmpString dataUsingEncoding:NSUTF8StringEncoding];

CIImage *image = [CIImage imageWithCGImage:rep.fullResolutionImage];

NSError *error = nil;
NSArray *filterArray = [CIFilter filterArrayFromSerializedXMP:xmpData 
                                             inputImageExtent:image.extent 
                                                        error:&error];
if (error) {
     NSLog(@"Error during CIFilter creation: %@", [error localizedDescription]);
}

CIContext *context = [CIContext contextWithOptions:nil];

for (CIFilter *filter in filterArray) {
     [filter setValue:image forKey:kCIInputImageKey];
     image = [filter outputImage];
}

Dies funktioniert jedoch nur bei einigen Filtern (Zuschneiden, automatische Verbesserung), bei anderen Filtern jedoch nicht, z. B. bei der Entfernung roter Augen. In diesen Fällen kann dieCIFilters haben keine sichtbare Wirkung. Daher meine Fragen:

Kennt jemand einen Weg, um rote Augen zu entfernenCIFilter? (In gewisser Weise im Einklang mit der Photos.app. Der Filter mit dem SchlüsselkCIImageAutoAdjustRedEye ist nicht genug. Zum Beispiel werden keine Parameter für die Position der Augen benötigt.)Gibt es eine Möglichkeit, diese Filter unter iOS 5 zu generieren und anzuwenden?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage