PDA

Vollständige Version anzeigen : XMP mit Get-Simple


KlausS
23.01.2010, 11:31
Hallo Leute,

In Bilddateien kann man auch Metadaten speichern. Nachdem klar ist,
dass GIMP in JPEG-Dateien die IPTC-Metadaten zerstoert, ruhen meine
Hoffnungen auf XMP, denn das wird ja unterstuetzt.
Was ich will ist folgendes: In den Metadaten kann man auch die Bewertung
eines Bildes speichern. In XMP ist es das Tag "RATING".
Schwache Bilder (kleiner RATING-Wert) will ich per Script-Fu kleiner
scalieren, die anderen unveraendert lassen.

Das Plug-In-Metadata-Get-Simple scheint da wie geschaffen.
Einfache Datenstruktur, scalare Groesse!
Meine Test zeigen nun folgendes:
Viele Zugriffe funktionieren, aber der auf RATING nicht!

Damit es einfacher wird, meinen Code:
;; ************************************************** *************************
;; * XmpGetSimple.scm *
;; * Funkt.: Zugriff auf skalare XMP-Tags mit ....Get-Simple *
;; * Vorauss.: JPEG mit XMP geöffnet. *
;; * Stand: *
;; * 1. Zugriff OK mit photoshop, Dublin Core, Iptc4xmpCore, exif *
;; * 2. Fehler bei Zugriff auf XMP-Schema xmp mit RATING oder LABEL *
;; * Fehler bei Zugriff auf XMP-Schema aux mit LENS *
;; * Hinweis: Egal ob mit oder ohne gimp-file-load *
;; ************************************************** *************************
(define (script-fu-XmpGetSimple Image inBildName)
(let* ( ; ----------------------- Variablendeklaration beginn
(Image (car(gimp-file-load RUN-INTERACTIVE inBildName inBildName)))
(InSchema 0) ; XMP schema prefix or URI
(InProperty 0) ; XMP property name
(thePropValue 0) ; Return XMP property value (STRING)
) ; ----------------------- Variablendeklaration ende
; ====> Zugriff auf 1 Tag in XMP-Schema photoshop funktioniert.
(set! InSchema "http://ns.adobe.com/photoshop/1.0/")
(set! InProperty "City")
(set! thePropValue (car (plug-in-metadata-get-simple Image InSchema InProperty)))
; ====> Zugriff auf 1 Tag in XMP-Schema Dublin Core funktioniert.
(set! InSchema "http://purl.org/dc/elements/1.1/")
(set! InProperty "creator")
(set! thePropValue (car (plug-in-metadata-get-simple Image InSchema InProperty)))
; ====> Zugriff auf Tag in XMP-Schema exif und iptc4xmp funktioniert
;
; ====> Fehler bei Zugriff auf 1 Tag in XMP-Schema xmp
(set! InSchema "http://ns.adobe.com/xmp/1.0/")
; (set! InSchema "http://ns.adobe.com/xap/1.0/")
(set! InProperty "Rating") ; Label geht auch nicht
(set! thePropValue (car (plug-in-metadata-get-simple Image InSchema InProperty)))
; Error: Procedure execution of plug-in-metadata-get-simple failed: (null)
(gimp-message thePropValue)
; ====> ebenso Fehler bei Zugriff auf 1 Tag in XMP-Schema aux
;(set! InSchema "http://ns.adobe.com/exif/1.0/aux/")
;(set! InProperty "Lens")
) )
; Registrieren in Gimp
(script-fu-register "script-fu-XmpGetSimple"
_"_XmpGetSimple"
_"Get-Simple auf XMP-Metadaten"
"Klaus XXXX<Klaus.XXXXX@GMX.de>"
"Klaus XXXX"
"2010/01/07"
"RGB GRAY"
SF-IMAGE "Image" 0
SF-FILENAME "Die Test-Eingabedatei" "F:\\Test\\XMP-get.jpg"
)
(script-fu-menu-register "script-fu-XmpGetSimple"
"<Image>/Script-Fu/MeineScript/XMP-Test")

Seltsam ist dabei noch, dass es egal ist, ob nun mit oder ohne Gimp-File-Load!

Kann jemand da mit einem Rat helfen?

Mit Gruessen,

KlausS