Umlaute in IPTC-Feldern der Datei-Information Umlaute in IPTC-Feldern der Datei-Information
 

News:

cpg1.5.48 Security release - upgrade mandatory!
The Coppermine development team is releasing a security update for Coppermine in order to counter a recently discovered vulnerability. It is important that all users who run version cpg1.5.46 or older update to this latest version as soon as possible.
[more]

Main Menu

Umlaute in IPTC-Feldern der Datei-Information

Started by AlexHartmann, May 02, 2007, 12:17:56 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

AlexHartmann

Ich bin auf ein merkwürdiges Problem gestoßen. Die aus den IPTC-Daten ausgelesenen Umlaute werden überall in Coppermine richtig dargestellt, nur nicht in den IPTC-Einträgen der Datei-Informationen, also IPTC-Titel, IPTC-Copyright und IPTC-Stichworte. Somit wird ein Bildtitel zwar oben unter dem Bild richtig dargestellt, nicht jedoch unten in den Bildinformtionen. Soweit ich sehe, ist alles auf UTF-8 eingestellt. Fällt jemandem dazu etwas ein?
Alexander

Joachim Müller

Ich glaube, schon mal was darüber gelesen zu haben. Soweit ich weiss sind die Meta-Daten in IPTC nicht utf-8 kodiert, sondern in iso8859-1, was leider zu Problemen führt. Abhilfe könnte eine Konvertierung des Outputs für IPTC-Daten per iconv schaffen, hab aber keinen Plan, wie man das im Detail regeln könnte.

AlexHartmann

Das heißt, es ist mehr oder weniger Zufall, daß das Problem gerade bei mir auftritt und sonst bei niemandem?

AlexHartmann

Besteht denn die Möglichkeit, die IPTC-Felder aus der Anzeige in der Datei-Information zu entfernen? Damit hätte sich das Problem ja erstmal erledigt. Gleichzeitig würde ich auch gerne den Galerie-Eigentümer vor dem Album-Namen entfernen.
Geht das?

Joachim Müller

Quote from: AlexHartmann on May 02, 2007, 02:16:53 PM
Das heißt, es ist mehr oder weniger Zufall
Nein, kein Zufall.

Quote from: AlexHartmann on May 02, 2007, 02:16:53 PM[...] daß das Problem gerade bei mir auftritt und sonst bei niemandem?
Vielleicht tritt es auch bei Tausenden auf. Bei mir halt nicht. Kann nur aus meiner Erfahrung sprechen.

Quote from: AlexHartmann on May 02, 2007, 05:23:15 PM
Besteht denn die Möglichkeit, die IPTC-Felder aus der Anzeige in der Datei-Information zu entfernen?
Schalte halt IPTC ab, dafür gibt es doch eine eigene Einstellung ::)

Quote from: AlexHartmann on May 02, 2007, 05:23:15 PM
Gleichzeitig würde ich auch gerne den Galerie-Eigentümer vor dem Album-Namen entfernen.
Eine Frage pro Beitrag! Du hast mich schon durch Deine Anfrage nach Individual-Support per eMail verärgert. Ich weise daher nochmals ausdrücklich auf unsere Hausordnung hin ("Board Rules"), zu deren Einhaltung Du Dich bei Registrierung verpflichtet hast.

AlexHartmann

Ich habe mich auch wegen der Anfrage nach "Idividual-Support" ausdrücklich entschuldigt, habe aber keine andere Möglichkeit gesehen. Ich habe auf meine erste Anmeldung beim Forum bis heute keine Bestätigungs-Mail bekommen. Hätte ich nicht die Möglichkeit, mir eine neue Mail-Adresse zuzuweisen, hätte ich keine Möglichkeit gehabt, mich erneut beim Forum anzumelden. Meine Standardadresse ist nachwievor im Forum gesperrt, da bereits vergeben.

Wenn ich IPTC vollständig abschalte, werden die Informationen doch wohl gar nicht mehr extrahiert oder? Damit stüden doch wohl auch der Datei-Titel und die Stichwörter nicht mehr zur Verfügung. Das wäre unnötig, da sie ja außer in den IPTC-Feldern der Datei-Information überall richtig angezeigt werden. Man müßte also lediglich die Anzeige dieser falsch dargestellten Felder in der Dateiinformation deaktivieren. Ist das möglich?

Joachim Müller

Quote from: AlexHartmann on May 02, 2007, 09:26:51 PM
Ich habe auf meine erste Anmeldung beim Forum bis heute keine Bestätigungs-Mail bekommen. Hätte ich nicht die Möglichkeit, mir eine neue Mail-Adresse zuzuweisen, hätte ich keine Möglichkeit gehabt, mich erneut beim Forum anzumelden. Meine Standardadresse ist nachwievor im Forum gesperrt, da bereits vergeben.
http://forum.coppermine-gallery.net/index.php?action=activate

Quote from: AlexHartmann on May 02, 2007, 09:26:51 PM
Das wäre unnötig, da sie ja außer in den IPTC-Feldern der Datei-Information überall richtig angezeigt werden. Man müßte also lediglich die Anzeige dieser falsch dargestellten Felder in der Dateiinformation deaktivieren. Ist das möglich?
Bearbeite include/iptc.inc.php entsprechend - kommentiere aus, was Du nicht brauchst.

AlexHartmann

Selbstverständlich habe ich versucht, mir den Aktivierungscode neu schicken zu lassen. Ich habe jedoch die Meldung erhalten, daß ein gültiger Aktivierungscode bereits verschickt wurde - nur ich habe ihn leider nicht erhalten.
Da das System meine reguläre Mail-Adresse gesperrt hat, kann ich sie auch nicht falsch eingegeben haben.
Aber das ist ja jetzt auch egal. Vielleicht wäre es aber praktisch, für solche Fälle eine Support-Mail-Adresse einzurichten.

Joachim Müller

Quote from: AlexHartmann on May 03, 2007, 02:20:23 PM
Vielleicht wäre es aber praktisch, für solche Fälle eine Support-Mail-Adresse einzurichten.
An die würden dann tausende von Schmocks ihre Support-Anfragen richten. Da könnten wir noch so oft hinschreiben, dass diese eMail-Adresse nur für Probleme mit der Registrierung genutzt werden darf - das lesen halt eine Menge Leute nicht, sondern kippen einfach ihr Problem ab (so wie Du ja auch - hast mir eine eMail über das Kontaktformular meiner persönlichen Homepage geschickt, obwohl da lang und breit steht, dass ich über dieses Formular keinerlei Kontaktaufnahme zum Thema Coppermine wünsche - und das sogar zweisprachig).
Außerdem: wer von den ca. 15 aktiven Supportern sollte denn die eMails lesen und darauf reagieren? Keine gute Idee.
Wenn Du die Aktiverungsmail nicht bekommen hast, dann ist möglicherweise auch was faul mit Deiner eMail-Adresse - hast Du da auch mal dran gedacht? Vielleicht ein übereifriges Stück Anti-Spam Software? Hier registrieren sich täglich -zig Leute, und aufgrund der sehr geringen Zahl der Nicht-Aktivierungen brauche ich mir keine Sorgen machen.

Wir haben übrigens eine strikte "nur ein Thema pro Beitrag"-Regel, deren Einhaltung Du zugestimmt hast bei der Registrierung. Hier in Deinem Beitrag scheint es aber um zwei Themen zu gehen: IPTC und eine fehlgeschlagene Registrierung. Ich bitte daher wieder um Rückkehr zum ursprünglichen Thema. Es wäre nett gewesen, wenn ich auf
Quote from: GauGau on May 03, 2007, 08:59:28 AMBearbeite include/iptc.inc.php entsprechend - kommentiere aus, was Du nicht brauchst.
eine Antwort erhalten hätte, ob das geklappt hat. Zum Nutzen für andere möchtest Du ja vielleicht mal beschreiben, was Du gemacht hast...

AlexHartmann

Nachdem ich in der Datei include/iptc.inc.php die nicht gewünschten Felder auskommentiert hatte, passierte genau das, was nicht sein sollte: der Titel und die Stichworte wurden nicht mehr ausgelesen und standen damit nicht mehr zur Verfügung.
Gibt es keine Möglichkeit, daß die Informationen zwar ausgelesen aber dann NUR in den Datei-Informationen nicht mehr angezeigt werden (da wo die Zeichenfehler auftreten). Unter den Bildern treten die Probleme ja nicht auf, und da sind die Titel ja auch unerläßlich.

Joachim Müller

Dann mach doch mal bitte Deine Änderungen in include/iptc.inc.php rückgängig (zurück zur Original-Version) und bearbeite stattdessen displayimage.php. Dort:    if ($CONFIG['read_iptc_data']) $iptc = get_IPTC($path_to_pic);

    if (isset($iptc) && is_array($iptc)) {
                array_walk($iptc, 'sanitize_data');
        if (isset($iptc['Title'])) $info[$lang_picinfo['iptcTitle']] = $iptc['Title'];
        if (isset($iptc['Copyright'])) $info[$lang_picinfo['iptcCopyright']] = $iptc['Copyright'];
        if (!empty($iptc['Keywords'])) $info[$lang_picinfo['iptcKeywords']] = implode(' ',$iptc['Keywords']);
        if (isset($iptc['Category'])) $info[$lang_picinfo['iptcCategory']] = $iptc['Category'];
        if (!empty($iptc['SubCategories'])) $info[$lang_picinfo['iptcSubCategories']] = implode(' ',$iptc['SubCategories']);
    }

AlexHartmann

Ja, das funktioniert, vielen Dank!
Leider habe ich mittlerweile festgestellt, daß es sich doch nicht nur um ein kosmetisches Problem handelt.
Die Stichworte und Titel mit Umlauten werden zwar überall (außer in den IPTC-Feldern) richtig angezeigt, aber über die Suche nicht gefunden. Auch wenn ich in der verlinkten Schlagwortsuche auf ein Wort mit Umlaut klicke, wird nichts gefunden.
Allerdings war das bei meinen ersten Coppermine-Versuchen noch anders. Bei den ersten hochgeladenen Abbildungen wurden die IPTC-Felder zwar auch faslch angezeigt, die Suche funktionierte jedoch. Ich habe mir daraufhin die SQL-Datenbank angesehen, und festgestellt, daß die Datensätze, die gefunden werden, also die zuerst hochgeladenen, in der Datenbank in ISO codiert sind, als "ü" für ü und "ß" für ß. Die Datensätze, die nicht gefunden werden, sind UTF-8 codiert "ü" für ü und "ß" für ß. Auch wenn die Datensätze in der Datenbank in ISO codiert sind, werden die IPTC-Felder in den Dateiinformationen jedoch UTF-8-codiert angezeigt. Ich habe schon versucht, wieder zu erreichen, daß die Daten in der SQL-Datenbank wieder in ISO gespeichert werden, nachdem ich sie mittlerweile auf UTF-8 eingestellt hatte, nur bringt das nichts. Ich gebe zu, daß ich bei der zwischenzeitlichen Rumprobiererei etwas den Überblick verloren habe.
Kann es sein, daß die Art, wie die Daten in der Datenbank gespeichert werden, vor allem von Coppermine und nicht den Einstellungen in der Datenbank selbst abhängt? In der Datenbank meines Providers habe ich nämlich im Gegensatz zu meiner lokalen XAMPP-Version nur ein Auswahlfeld für die Sprache, gespeichert wird jedoch in UTF-8.
Es wäre natürlich nach wie vor sehr wünschenswert, wenn auch die IPTC-Felder richtig angezeigt würden, daß die Suche funktioniert, ist allerdings essenziell. Wie kriege ich die Datenbankspeicherung wieder auf ISO?

AlexHartmann

Ergänzung:
Ich habe festgestellt, daß die Umlaute in der Datenbank als ISO gespeichert werden, wenn ich die Informationen in Coppermine manuell ändere.
Wenn ich also das angezeigte ü mit einem neuen ü überschreibe und abspeichere, wird der Begriff hinterher durch Anklicken des Links auch gefunden. Es scheint sich somit nicht um ein Einstellungsproblem in der Datenbank, sondern um ein Problem damit zu handeln, wie Coppermine die Daten beim Import in der Datenbank speichert. Vielleicht liegt hier auch das Problem für die Anzeige der IPTC-Felder (die ich in der Datenbank übrigens nicht gefunden habe)?

lamama

#13
Ich grab diesen alten Thread mal wieder aus, weil ich an dem selben Problem arbeite und gerne zu einer Lösung kommen würde, die auf irgendeine Art und Weise die IPTC-Keywords* suchbar macht  ::)

Quote from: AlexHartmann on May 07, 2007, 05:49:26 PM
Vielleicht liegt hier auch das Problem für die Anzeige der IPTC-Felder (die ich in der Datenbank übrigens nicht gefunden habe)?

Ja, hab ich auch nicht gefunden und einen Verdacht:

Sollte es tatsächlich so sein, dass CPG die IPTC-Daten tatsächlich vor JEDER Anzeige eines Einzelbildes (Midsize) aus der Bilddatei selber neu ausliest?  :o
(Und da die Midsize-Bilder offenbar keine IPTC-Daten enthalten: Jedes mal aus dem Fullsize-Bild?)

*(mit Umlauten)

lamama

So, ich hab ne Lösung, bzw. 'nen Workaround oder zumindest einen Ansatz:

Man nehme picmgmt.inc.php, und dort die Funktion add_picture.

Suche nach:
           if (is_array($iptc) && !$title && !$caption && !$keywords) {  //if any of those 3 are filled out we don't want to override them, they may be blank on purpose.
               $title = (isset($iptc['Title'])) ? $iptc['Title'] : $title;
               $caption = (isset($iptc['Caption'])) ? $iptc['Caption'] : $caption;
               $keywords = (isset($iptc['Keywords'])) ? implode(' ',$iptc['Keywords']) : $keywords;


füge danach ein:
               $title  = utf8_encode(html_entity_decode($title, ENT_NOQUOTES));
               $caption = utf8_encode(html_entity_decode($caption, ENT_NOQUOTES));
               $keywords = utf8_encode(html_entity_decode($keywords, ENT_NOQUOTES));               


Diese Lösung funktioniert
a) wenn die Umlaute in den IPTC-Daten mit html-entities gecoded sind (wie es xnview macht)
b) leider nur mit Bildern, die neu dazukommen. Es fehlt also noch ein Admin-Tool, das die Bilddaten neu in die Datenbank einliest. Vll. könnte man das Tool »Informationen über Dateigrößen und -abmessungen erneuern« dazu überreden, aber dazu hab ich heute abend nacht morgen keine Lust mehr.  ::)

Vll. mag ja mal jemand nen Blick draufwerfen, der sich mehr mit php auskennt, ob das nen brauchbarer Ansatz ist...

Joachim Müller

Prinzipiell klasse, nur fehlt noch ein bißchen der Code zum zusammenführen von Inhalten. Will sagen: was passiert, wenn eine Datei einen IPTC-Titel und einen Coppermine-Titel hat, die voneinander abweichen?

Hast Du mal geschaut, wie die Daten aus EXIF eingelesen werden?

lamama

Quote from: GauGau on December 09, 2007, 11:11:30 AM
Will sagen: was passiert, wenn eine Datei einen IPTC-Titel und einen Coppermine-Titel hat, die voneinander abweichen?

Hmmm. Sollte eigentlich an dieser Stelle nicht vorkommen, oder? Wenn Bilder per Batch-Add eingelesen werden war ja noch keine Gelegenheit, vorher andere Titel via Coppermine anzugeben. Oder überseh ich da was?

Außerdem: die einzige funktionelle Änderung am Code bisher ist, daß die IPTC-Daten jetzt (für meine Bedürfnisse) korrekt ausgelesen und nach utf8 konvertiert werden - und damit korrekt suchbar werden. Alles andere ist noch wie vorgefunden.

Wäre ne Frage, wie andere Tools als XnView ihre IPTC-Umlaute encodieren - wenn die mehrheitlich auch html-entities verwenden, wäre's evtl. sinnvoll, diese Umlautkonvertierung default zu machen.

Quote
Hast Du mal geschaut, wie die Daten aus EXIF eingelesen werden?

Nö... Gäbs da noch was zu entdecken?  ;)

Mal schauen, wie lange ich mich noch wachhalten kann - für mich wäre jetzt dran, die IPTC-Daten aus den Bestandsdaten neu einzulesen. Vorschläge, wo man das am sinnvollsten einbauen kann, bitte zu mir  ;D

lamama

Ein weiterer quick&dirty hack.

Was er macht:
- Drei IPTC-Datenfelder werden neu aus den Bildern ausgelesen und in die CPG-Datenbank geschrieben (Title, Caption, Keywords).
- Dabei werden (siehe oben) Umlaute, die in den Dateien als html-entities gespeichern sind, in der CPG-Datenbank in UTF-8 gespeichert.
- Bereits in CPG vorhandene Angaben zu Title, Caption und Keywords werden überschrieben, u.a. um falsch codierte Daten zuverlässig zu überschreiben.

Ich habe den Hack in die Admin-Tool-Funktion "Informationen über Dateigrößen und -abmessungen erneuern" reingehängt. Und zwar so, dass beim Aufruf dieser Funktion IN JEDEM FALL (wenn IPTC-Daten gefunden werden) alle in CPG schon vorhandenen Angaben zu Titel, Caption und Keywords (vorher ausgelesene IPTC-Daten aber auch per Hand eingegebene) überschrieben werden.

Mir reicht das für's erste und ich hab keine Motivation verspürt, eine neue, separate Admin-Tool-Funktion daraus zu machen (was natürlich total super wäre, wenns jemand anderes täte  ;D )

Man nehme: util.php

suche nach / search for:
               if (@file_exists($full_pic_url)){

                       $filesize = @filesize($full_pic_url);
                       $dimensions = @getimagesize($full_pic_url);


füge dahinter ein / add after:

                       // hack - read iptc data from files, convert html-entities and write it to cpg database as utf-8
                       if ($CONFIG['read_iptc_data']) {
                    $iptc = get_IPTC($full_pic_url);
                               
                    if (is_array($iptc))  {
              $title = utf8_encode(html_entity_decode($iptc['Title'], ENT_NOQUOTES));                        
              $caption = utf8_encode(html_entity_decode($iptc['Caption'], ENT_NOQUOTES));                    
              $keywords = utf8_encode(html_entity_decode(implode(' ',$iptc['Keywords'])));  
               
              $iptc_upd = @cpg_db_query("UPDATE {$CONFIG['TABLE_PICTURES']} SET title = '$title', caption = '$caption', keywords = '$keywords' WHERE pid = '$db_pid' LIMIT 1");
     
              $prob .= "iptc data updated <br />";

          }
        }             // end of hack


Es ist nichts anderes eine Anpassung des picmgmt.inc.php-hacks (siehe oben) in util.php rein.

Vll kann da auch jemand außer mir was mit anfangen.

jokas

sehr guter hack, besten dank dafür  :)

leider habe ich immer noch ein problem mit den html umlauten, den in den dateiinfos wird unter IPTC Title und ITPC Stichworte immer noch zb. Sch&uuml;lerlotse Sch&uuml;lerlotsin angezegt, obwohl es direkt unter dem Bild richtig dargestellt ist.

eine suche mit umlauten funktioniert, allerding unterscheidet CPG dabei ob ein Groß oder kleinbuchstabe verwendet wurde. Wenn ich zb. nach "ärger" suche, es aber als "Ärger" eingegeben habe kommt kein ergebniss. :-(

ich würde mich sehr freuen wenn mir da noch geholfen werden könnte.
_____________________________________
|-->  J1.5.6 + CPG1.4.19 + Bridge  <--|