Tôi đang tạo ứng dụng chỉnh sửa ảnh và cho đến nay tôi đã quản lý để đọc siêu dữ liệu từ tệp hình ảnh thành công (sau khi nhận được câu trả lời cho câu hỏi này : Reading Camera data from EXIF while opening NSImage on OS X).Ghi siêu dữ liệu hình ảnh (EXIF/TIFF/IPTC) vào tệp hình ảnh trong OS X
source = CGImageSourceCreateWithURL((__bridge CFURLRef)url, NULL);
NSDictionary *props = (__bridge_transfer NSDictionary *) CGImageSourceCopyPropertiesAtIndex(source, 0, NULL);
Điều này sao chép tất cả siêu dữ liệu của tệp hình ảnh vào từ điển và hoạt động tốt. Tuy nhiên, tôi không thể tìm hiểu cách ghi siêu dữ liệu này trở lại một tệp mới được tạo ra NSImage
(hoặc tệp hình ảnh). Dưới đây là cách tôi lưu tập tin của tôi (nơi img
là một ví dụ NSImage mà không siêu dữ liệu và self.cachedMetadata
được từ điển đọc từ hình ảnh ban đầu):
NSBitmapImageRep *rep = [NSBitmapImageRep imageRepWithData:[img TIFFRepresentation]];
[rep setProperty:NSImageEXIFData withValue:self.cachedMetadata];
NSData *data;
if([[fileName lowercaseString] rangeOfString:@".png"].location != NSNotFound){
data = [rep representationUsingType:NSPNGFileType properties:nil];
}else if([[fileName lowercaseString] rangeOfString:@".tif"].location != NSNotFound){
data = [rep representationUsingType:NSTIFFFileType properties:nil];
}else{ //assume jpeg
data = [rep representationUsingType:NSJPEGFileType properties:@{NSImageCompressionFactor: [NSNumber numberWithFloat:1], NSImageEXIFData: self.cachedMetadata}];
}
[data writeToFile:fileName atomically:YES];
Làm thế nào tôi có thể viết các siêu dữ liệu? Tôi đã từng viết EXIF cho JPEG (từ điển chỉ EXIF trước đó) nhưng vì EXIF thiếu một số trường mà hình ảnh ban đầu có (thẻ IPTC và TIFF) tôi cần thay đổi phương thức đọc của mình. Bây giờ tôi có tất cả dữ liệu, nhưng tôi không biết cách ghi nó vào tệp hình ảnh mới được tạo ra.
Xin cảm ơn, Có thể.
Xin chào! Tôi ít nhiều trong tình huống tương tự nhưng không thể hiểu được giải pháp của bạn. Tôi đã nắm bắt các từ khóa, titile và mô tả tôi phải viết vào phần IPTC của một jpg tôi biết con đường của. Điều này có thể giải quyết như thế nào? bạn có thể vui lòng xem câu hỏi này và có thể đăng câu trả lời không? http://stackoverflow.com/questions/23874865/write-iptc-data-to-file – user2452250