Sto creando un'applicazione di fotoritocco e fino ad ora sono riuscito a leggere i metadati dai file di immagine con successo (dopo aver ottenuto una risposta a questa domanda : Reading Camera data from EXIF while opening NSImage on OS X).Scrittura di metadati immagine (EXIF/TIFF/IPTC) in file immagine in OS X
source = CGImageSourceCreateWithURL((__bridge CFURLRef)url, NULL);
NSDictionary *props = (__bridge_transfer NSDictionary *) CGImageSourceCopyPropertiesAtIndex(source, 0, NULL);
Copia tutti i metadati del file immagine in un dizionario e funziona correttamente. Tuttavia, non sono riuscito a scoprire come scrivere questi metadati su un nuovo NSImage
(o su un file immagine). Ecco come li risparmio mio file (dove img
è un'istanza NSImage senza metadati e self.cachedMetadata
è il dizionario letta da l'immagine iniziale):
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];
Come posso scrivere i metadati? Scrivevo solo EXIF per JPEG (il dizionario era EXIF-solo in precedenza) con successo ma poiché EXIF mancava di alcuni campi che le immagini iniziali avevano (tag IPTC e TIFF) avevo bisogno di cambiare il mio metodo di lettura. Ora ho tutti i dati, ma non so come scriverlo sul file immagine appena creato.
Grazie, Can.
ciao! Sono più o meno nella stessa situazione ma non riesco a capire la tua soluzione. Ho un elenco di parole chiave, titoli e descrizione che devo scrivere nella sezione IPTC di un jpg che conosco il percorso di. Come si può fare? potresti per favore dare un'occhiata a questa domanda e magari postare una risposta? http://stackoverflow.com/questions/23874865/write-iptc-data-to-file – user2452250