2014-06-24 14 views
5

Mi piacerebbe leggere/scrivere metadati XMP in file JPEG e PNG.C'è un modo per leggere/scrivere metadati XMP usando imagemagick?

sono in grado di farlo utilizzando il exiftool

~ $ exiftool -xmp-dc:description="FooBar" sample.png 
    1 image files updated 
~ $ exiftool sample.png | grep "Description" 
Description      : FooBar 

Tuttavia, io non sono in grado di leggere il metadati XMP usando ImageMagick

~ $ identify -verbose sample.png | grep "Description" 

La mia ragione di scrivere i metadati XMP è che in modo che possa essere letto dai prodotti Adobe.

Domanda

  • C'è un modo per leggere/scrivere i metadati XMP usando ImageMagick?
+0

Off topic, ma la compatibilità con i prodotti Adobe non è l'unico motivo per voler manipolare Metadati XMP. http://www.metadataworkinggroup.org/pdf/mwg_guidance.pdf – asp

+0

png non supporta i metadati -> http://stackoverflow.com/questions/9542359/does-png-contain-exif-data-like-jpg –

+0

Questo è solo per quanto riguarda i metadati EXIF ​​(anche se Exiftool e Exiv2 hanno una soluzione alternativa). PNG supporta metadati XMP https://en.wikipedia.org/wiki/Extensible_Metadata_Platform#Location_in_file_types * Modifica: * Bah, non ha controllato le date – StarGeek

risposta

1

Quello che vuoi chiedere è "ImageMagick supporta la lettura o la scrittura di metadati XMP (descrittivi)?". La risposta a questa domanda, dalla lettura the documentation, è no. ImageMagick legge (quasi) tutti i metadati da un file, ma non i metadati descrittivi.

Se per qualche motivo è necessario utilizzare ImageMagick per estrarre i metadati XMP, è possibile provare a includere un filtro. Filters can be configured per elaborare i file immagine, ma non fanno parte di ImageMagick stesso.

1

convertito -ping yourimage.jpg XMP: -

+0

Grazie, ha funzionato benissimo per me! ImageMagick 7 – Mark

+0

come scrivere i metadati? –

0

dati XMP di accesso può essere fatto come segue:

ImageMagick.XmpProfile xmp = image.GetXmpProfile(); 

Console.WriteLine("\n\n----> xmp:" + xmp); 
if (xmp != null) 
{ 
    you have to process the XML data of the XMPs result. 
    ie. use XPATH or some other XML interface. 
}