Bir kullanıcı iOS üzerindeki yerleşik Photos.app içindeki fotoğraflarda bazı değişiklikler (kırpma, kırmızı göz giderme, ...) yaptığında, değişiklikler fullResolutionImagekarşılık gelen tarafından döndürülenlere uygulanmaz ALAssetRepresentation.
Ancak, değişikliklerin uygulanır thumbnailve fullScreenImagedöndürdüğü ALAssetRepresentation. Ayrıca, uygulanan değişikliklerle ilgili bilgiler ALAssetRepresentation, anahtar aracılığıyla, metadata sözlüğünde bulunabilir @"AdjustmentXMP".
fullResolutionImageTutarlılığı korumak için bu değişiklikleri kendime uygulamak istiyorum. İOS6 + CIFilter ' lardafilterArrayFromSerializedXMP: inputImageExtent:error: bu XMP meta verilerini bir dizi dizisine dönüştürebileceğini öğrendim CIFilter:
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];
}
Ancak, bu yalnızca bazı filtrelerde (kırpma, otomatik iyileştirme) işe yararken kırmızı göz giderme gibi diğerleri için geçerli değildir. Bu durumlarda, CIFiltere-postaların görünür bir etkisi yoktur. Bu nedenle sorularım:
- Kırmızı göz gidermenin bir yolunu bilen var mı
CIFilter? (Photos.app ile tutarlı bir şekilde. Anahtarlı filtrekCIImageAutoAdjustRedEyeyeterli değil. Örneğin, gözlerin pozisyonu için parametre almıyor.) - Bu filtreleri iOS 5 altında oluşturma ve uygulama imkanı var mı?