เมื่อผู้ใช้ทำให้การเปลี่ยนแปลงบางอย่าง (การปลูกพืช, ลบตาแดง, ... ) ให้กับรูปถ่ายในในตัวPhotos.appบน iOS, การเปลี่ยนแปลงจะไม่นำไปใช้กับการส่งคืนโดยที่สอดคล้องกันfullResolutionImage
ALAssetRepresentation
อย่างไรก็ตามการเปลี่ยนแปลงจะนำไปใช้กับthumbnail
และfullScreenImage
ส่งคืนโดยไฟล์ALAssetRepresentation
. นอกจากนี้ข้อมูลเกี่ยวกับการเปลี่ยนแปลงประยุกต์ที่สามารถพบได้ในALAssetRepresentation
's @"AdjustmentXMP"
เมตาดาต้าพจนานุกรมผ่านที่สำคัญ
ฉันต้องการใช้การเปลี่ยนแปลงเหล่านี้กับfullResolutionImage
ตัวฉันเองเพื่อรักษาความสม่ำเสมอ ฉันได้พบว่าในiOS6 + CIFilter
's filterArrayFromSerializedXMP: inputImageExtent:error:
สามารถแปลงนี้ XMP-ข้อมูลเมตาไปยังอาร์เรย์ของCIFilter
' s:
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];
}
อย่างไรก็ตามวิธีนี้ใช้ได้กับตัวกรองบางตัวเท่านั้น (การครอบตัดการปรับแต่งภาพอัตโนมัติ) แต่ใช้ไม่ได้กับตัวกรองอื่น ๆ เช่นการลบตาแดง ในกรณีเหล่านี้CIFilter
ไม่มีผลใด ๆ ที่มองเห็นได้ ดังนั้นคำถามของฉัน:
- มีใครพอทราบวิธีลบตาแดง
CIFilter
ไหมคะ? (ในลักษณะที่สอดคล้องกับ Photos.app ฟิลเตอร์ที่มีคีย์kCIImageAutoAdjustRedEye
ไม่เพียงพอเช่นไม่ใช้พารามิเตอร์สำหรับตำแหน่งของดวงตา) - มีความเป็นไปได้ที่จะสร้างและใช้ตัวกรองเหล่านี้ภายใต้ iOS 5 หรือไม่?