Author Topic: [Mod] EXIF V1.7.10 Optional Googlemap  (Read 99187 times)

0 Members and 1 Guest are viewing this topic.

Offline VGerhard

  • Newbie
  • *
  • Posts: 31
    • View Profile
Re: [Mod] EXIF V1.7.10 Optional Googlemap
« Reply #15 on: November 11, 2011, 02:31:06 PM »
Für V1.7.10 oder höher. .....
1.) speichert die datei "install_exif.php" aus dem anhang in euren root ab, und ruft sie auf.
Hallo Andi,

da ich hoffe, auf diese Weise das Bild-Aufnahmedatum als Sortier-Kriterium nutzen zu können, habe ich mal mit der Installierung dieses mods begonnen.
Leider bekomme ich aber bereits bei Aufruf der install_exif.php folgende Fehlermeldung:

"An unexpected error occured. Please try again later. - Der Zugriff auf das angeforderte Objekt ist nicht möglich. Entweder kann es vom Server nicht gelesen werden oder es ist zugriffsgeschützt."

Allerdings wird das 4images-Installer-Fenster ganz korrekt angezeigt, mit allen Infos aus der global.php.
Ich kann auch vollkommen problemlos mit phpmyadmin auf die Datenbank meines offline-Server (xampp), also auch auf die enzelnen 4images-Tabellen zugreifen.
Auch über das ACP habe ich vollen Zugriff auf die Datenbank-Informationen (z.B. Bilder bearbeiten etc.).

Was könnte der Grund sein, daß die install_exif.php nicht ausgeführt wird?
Ein Passwort ist nicht eingerichtet.
Wird beim Ausführen möglicherweise der Benutzername (hier "root") nicht erkannt? Der steht aber ebenfalls korrekt in der global.php.

Ich hoffe, ich gehe Dir mit meinen laienhaften Fragen nicht zu sehr auf den Wecker...

Frdl. Grüße

Gerd





Rembrandt

  • Guest
Re: [Mod] EXIF V1.7.10 Optional Googlemap
« Reply #16 on: November 11, 2011, 05:54:26 PM »
 
...da ich hoffe, auf diese Weise das Bild-Aufnahmedatum als Sortier-Kriterium nutzen zu können, habe ich mal mit der Installierung dieses mods begonnen.
an sich können das die beiden Mods (Exif u. IPTC) nicht, ausser temporär über die suche.
aber damit man die sortierung im` CP/Bilder sortieren nach  ...` z.b. nach exif_datum umsetzen kann, müßen die Exif daten erst mal in die DB, und dazu ist der mod ja gut.
für die eigentliche sortierung nach beliebigen exif_daten werde ich noch ein addon erstellen und hier im forum posten. :)

.. Leider bekomme ich aber bereits bei Aufruf der install_exif.php folgende Fehlermeldung:

4b]An unexpected error occured. Please try again later. - Der Zugriff auf das angeforderte Objekt ist nicht möglich. Entweder kann es vom Server nicht gelesen werden oder es ist zugriffsgeschützt.[/b]"
...Allerdings wird das` images-Installer-Fenster ganz korrekt angezeigt, mit allen Infos aus der global.php.
.... Der steht aber ebenfalls korrekt in der global.php......
du meinst in der config.php nicht global.php?
abgesehen davon kannst du die tabellen auch über PHPAdmin anlegen.


ALTER TABLE 
`4images_imagesADD `4Image_MakeVARCHAR50 NOT NULL;  
ALTER TABLE `4images_imagesADD `4Image_ModelVARCHAR50 NOT NULL;  
ALTER TABLE `4images_imagesADD `4Image_DateTimeOriginalVARCHAR50 NOT NULL;  
ALTER TABLE `4images_imagesADD `4Image_ISOSpeedRatingsVARCHAR20 NOT NULL;   
ALTER TABLE `4images_imagesADD `4Image_ExposureTimeVARCHAR20 NOT NULL;  
ALTER TABLE `4images_imagesADD `4Image_FNumberVARCHAR20 NOT NULL;  
ALTER TABLE `4images_imagesADD `4Image_FocalLengthVARCHAR20 NOT NULL;  
ALTER TABLE `4images_imagesADD `4Image_ExposureBiasValueVARCHAR20 NOT NULL;   
ALTER TABLE `4images_imagesADD `4Image_ApertureValueVARCHAR20 NOT NULL;  
ALTER TABLE `4images_imagesADD `4Image_MaxApertureValueVARCHAR20 NOT NULL;  
ALTER TABLE `4images_imagesADD `4Image_MeteringModeVARCHAR50 NOT NULL;  
ALTER TABLE `4images_imagesADD `4Image_FlashVARCHAR100 NOT NULL;  
ALTER TABLE `4images_imagesADD `4Image_ExposureProgramVARCHAR50 NOT NULL;  
ALTER TABLE `4images_imagesADD `4Image_ExposureModeVARCHAR50 NOT NULL;  
ALTER TABLE `4images_imagesADD `4Image_WhiteBalanceVARCHAR50 NOT NULL;  
ALTER TABLE `4images_imagesADD `4Image_GPSLatitudeVARCHAR20 NOT NULL;  
ALTER TABLE `4images_imagesADD `4Image_GPSLatitudeRefVARCHAR20 NOT NULL;  
ALTER TABLE `4images_imagesADD `4Image_GPSLongitudeVARCHAR20 NOT NULL;  
ALTER TABLE `4images_imagesADD `4Image_GPSLongitudeRefVARCHAR20 NOT NULL;  
ALTER TABLE `4images_imagesADD `4Image_GPSAltitudeVARCHAR20 NOT NULL
ALTER TABLE `4images_imagesADD `4Image_GPSTrackVARCHAR20 NOT NULL

ALTER TABLE `4images_images_tempADD `4Image_MakeVARCHAR50 NOT NULL;  
ALTER TABLE `4images_images_tempADD `4Image_ModelVARCHAR50 NOT NULL;  
ALTER TABLE `4images_images_tempADD `4Image_DateTimeOriginalVARCHAR50 NOT NULL;  
ALTER TABLE `4images_images_tempADD `4Image_ISOSpeedRatingsVARCHAR20 NOT NULL;   
ALTER TABLE `4images_images_tempADD `4Image_ExposureTimeVARCHAR20 NOT NULL;  
ALTER TABLE `4images_images_tempADD `4Image_FNumberVARCHAR20 NOT NULL;  
ALTER TABLE `4images_images_tempADD `4Image_FocalLengthVARCHAR20 NOT NULL;  
ALTER TABLE `4images_images_tempADD `4Image_ExposureBiasValueVARCHAR20 NOT NULL;   
ALTER TABLE `4images_images_tempADD `4Image_ApertureValueVARCHAR20 NOT NULL;  
ALTER TABLE `4images_images_tempADD `4Image_MaxApertureValueVARCHAR20 NOT NULL;  
ALTER TABLE `4images_images_tempADD `4Image_MeteringModeVARCHAR50 NOT NULL;  
ALTER TABLE `4images_images_tempADD `4Image_FlashVARCHAR100 NOT NULL;  
ALTER TABLE `4images_images_tempADD `4Image_ExposureProgramVARCHAR50 NOT NULL;  
ALTER TABLE `4images_images_tempADD `4Image_ExposureModeVARCHAR50 NOT NULL;  
ALTER TABLE `4images_images_tempADD `4Image_WhiteBalanceVARCHAR50 NOT NULL;  
ALTER TABLE `4images_images_tempADD `4Image_GPSLatitudeVARCHAR20 NOT NULL;  
ALTER TABLE `4images_images_tempADD `4Image_GPSLatitudeRefVARCHAR20 NOT NULL;  
ALTER TABLE `4images_images_tempADD `4Image_GPSLongitudeVARCHAR20 NOT NULL;  
ALTER TABLE `4images_images_tempADD `4Image_GPSLongitudeRefVARCHAR20 NOT NULL;  
ALTER TABLE `4images_images_tempADD `4Image_GPSAltitudeVARCHAR20 NOT NULL
ALTER TABLE `4images_images_tempADD `4Image_GPSTrackVARCHAR20 NOT NULL;

ALTER TABLE `4images_wordmatchADD `Make_matchTINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatchADD `Model_matchTINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatchADD `DateTimeOriginal_matchTINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatchADD `4ISOSpeedRatings_matchTINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatchADD `ExposureTime_matchTINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatchADD `FNumber_matchTINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatchADD `FocalLength_matchTINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatchADD `ExposureBiasValue_matchTINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatchADD `ApertureValue_matchTINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatchADD `MaxApertureValue_matchTINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatchADD `MeteringMode_matchTINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatchADD `Flash_matchTINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatchADD `ExposureProgram_matchTINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatchADD `ExposureMode_matchTINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatchADD `WhiteBalance_matchTINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatchADD `GPSLatitude_matchTINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatchADD `GPSLatitudeRef_matchTINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatchADD `GPSLongitude_matchTINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatchADD `GPSLongitudeRef_matchTINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatchADD `GPSAltitude_matchTINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatchADD `GPSTrack_matchTINYINT(1) DEFAULT '0' NOT NULL;


mfg Andi
« Last Edit: November 11, 2011, 06:06:13 PM by Rembrandt »

Offline VGerhard

  • Newbie
  • *
  • Posts: 31
    • View Profile
Re: [Mod] EXIF V1.7.10 Optional Googlemap
« Reply #17 on: November 11, 2011, 08:03:57 PM »
an sich können das die beiden Mods (Exif u. IPTC) nicht, ausser temporär über die suche.
aber damit man die sortierung im` CP/Bilder sortieren nach  ...` z.b. nach exif_datum umsetzen kann, müßen die Exif daten erst mal in die DB, und dazu ist der mod ja gut.
Hallo Andi,

vielen Dank für die ausführliche Antwort.

Zunächst: Die Ursache für die Fehlfunktion mit install_exif.php ist die xampp-Version 1.7.3. Habe im Internet entsprechende Hinweise darauf gefunden, daß diese Fehlermeldung auch bei anderen Anwendungen unter xamp 1.7.3 auftritt und mich dann spontan entschlossen, doch direkt online zu installieren. Das klappte dann dank Deiner sehr gut dokumentierten Anleitung problemlos.

Da die EXIF-Daten ja nun griffbereit in der Datenbank liegen, habe ich mich mal ein wenig tiefer in die Materie begeben und nachgeforscht, wo und wie in den unterschiedlichen php-Scripten gesucht wird und es mittlerweile tatsächlich geschafft, die Sortier-Option "Aufnahmedatum" in die Suchmaske der "Einstellungen"-Seite zu bringen - und es klappt sogar...!

In der EXIF-Datenbank vermisse ich noch die 35mm-Film-Brennweite. Um die zusätzlichen Felder anzulegen, habe ich einfach Deine install_exif.php "mißbraucht", auf jeweils eine Zeile für "FocalLengthIn35mmFilm" reduziert und nochmal aufgerufen. Auch das klappte einwandfrei. Hängt jetzt zwar am Ende der Tabelle, aber das hat hoffentlich auf die Reihenfolge der Darstellung keinen negativen Einfluß.

Jetzt bin ich eifrig dabei, überall da, wo die "normale" Brennweite in den Scripten vorkommt, einen adäquaten Eintrag für die 35mm-Film-Brennweite einzufügen. Mit Copy/Paste und ein paar manuellen Änderungen komme ich ganz gut voran. Irgendwie werde ich das vielleicht auch hinbekommen. Wenn ich nichts übersehe, müßte es eigentlich irgendwie klappen. Zur Not muß ich einfach mal die Inhalte der übrigen Scripte gezielt durchsuchen, ob ich auch in anderen Scripten noch was ergänzen muß.

Ich werde über einen weiteren Erfolg, aber auch über eine Bauchlandung noch berichten. Ist eigentlich wie beim erstenmal Selbst-Tapezieren... Sollte es am Ende wirklich funktionieren, stelle ich einfach mal meine Ergänzungen hier ein.

Frdl. Grüße

Gerd

Rembrandt

  • Guest
Re: [Mod] EXIF V1.7.10 Optional Googlemap
« Reply #18 on: November 11, 2011, 08:22:57 PM »
...
Zunächst: Die Ursache für die Fehlfunktion mit install_exif.php ist die xampp-Version 1.7.3. Habe im Internet entsprechende Hinweise darauf gefunden, daß diese Fehlermeldung auch bei anderen Anwendungen unter xamp 1.7.3 auftritt und mich dann spontan entschlossen, doch direkt online zu installieren. Das klappte dann dank Deiner sehr gut dokumentierten Anleitung problemlos.
aha das wußte ich auch nicht das es damit probleme gibt..

... habe ich mich mal ein wenig tiefer in die Materie begeben und nachgeforscht, wo und wie in den unterschiedlichen php-Scripten gesucht wird und es mittlerweile tatsächlich geschafft, die Sortier-Option "Aufnahmedatum" in die Suchmaske der "Einstellungen"-Seite zu bringen - und es klappt sogar...!
ahh.. endlich mal jemand der sich dafür interessiert und selber die initative ergreift, wenn du mal ein par mods eingebaut hast wirst du dich schon etwas besser in der 4i umgebung (php) zurechtfinden, nur weiter so.  :thumbup:

In der EXIF-Datenbank vermisse ich noch die 35mm-Film-Brennweite. Um die zusätzlichen Felder anzulegen, habe ich einfach Deine install_exif.php "mißbraucht", auf jeweils eine Zeile für "FocalLengthIn35mmFilm" reduziert und nochmal aufgerufen. Auch das klappte einwandfrei. Hängt jetzt zwar am Ende der Tabelle, aber das hat hoffentlich auf die Reihenfolge der Darstellung keinen negativen Einfluß.
nein das hat keine auswirkungen, eigentlich gibt es ja in der EXIF funktion eine eigene für "FocalLengthIn35mmFilm" aber die habe ich dann letztendlich nicht eingebaut das die meisten Kameras das nicht unterstützen.

..... Ist eigentlich wie beim erstenmal Selbst-Tapezieren...
hehe.. ja das erste mal ist am schwersten, also drann bleiben und noch viel spass damit.

zu deiner vorherigen frage, nein du nervst nicht mit deinen fragen dazu ist ja ein forum da.  :)

mfg Andi

Offline VGerhard

  • Newbie
  • *
  • Posts: 31
    • View Profile
Re: [Mod] EXIF V1.7.10 Optional Googlemap
« Reply #19 on: November 12, 2011, 09:13:29 PM »
... eigentlich gibt es ja in der EXIF funktion eine eigene für "FocalLengthIn35mmFilm" aber die habe ich dann letztendlich nicht eingebaut das die meisten Kameras das nicht unterstützen.

Hallo Andi,

die Speicherung und Anzeige des 35-mm-Vergleichswertes "FocalLengthIn35mmFilm" konnte ich inzwischen komplett einbinden. Ich bastel noch an einer Möglichkeit, diesen bei meiner älteren Sony DSC-P100 fehlenden Wert im Script selbst zu generieren. Der Multiplikator 7.9 ist bekannt. Theoretisch sollte es also kein Problem sein. Aber ich muß erst mal ausprobieren, wie ich zwischen einzelnen Kamera-Modellen unterscheiden kann. Dann könnte man das doch sicher irgendwie mit IF / ELSEIF lösen...

Die Sortierfunktion nach dem Aufnahmedatum mußte ich nochmal nachbessern. Nach Eingabe weiterer Testbilder stellte ich fest, daß das Sortier-Ergebnis noch nicht korrekt war. Ich habe nun in "funktions.php" das Datum/Zeit-Format vor dem Abspeichern in die Datenbank in JJJJ-MM-TT hh:mm:ss umgewandelt. Jetzt läuft die Sortierung absolut korrekt. Beim Datum-Format wird im Moment noch statt der erwünschten "-" aber ein Doppelpunkt angezeigt. Liegt eindeutig daran, daß ich mit dem äußerst schlecht dokumentierten preg_replace nicht zurechtkomme. Seltsam ist, daß das Ergebnis offline (direkt als Test-php-Script im Browser ausgeführt) korrekt mit "-" angezeigt wird, online innerhalb 4images aber mit ":".

Beste Grüße und angenehmen Sonntag

Gerd

Rembrandt

  • Guest
Re: [Mod] EXIF V1.7.10 Optional Googlemap
« Reply #20 on: November 13, 2011, 09:37:57 AM »
Hi!
....die Speicherung und Anzeige des 35-mm-Vergleichswertes "FocalLengthIn35mmFilm" konnte ich inzwischen komplett einbinden. Ich bastel noch an einer Möglichkeit, diesen bei meiner älteren Sony DSC-P100 fehlenden Wert im Script selbst zu generieren. ...
ich habe mal die Exif funktion um das 35mm Äquivalent erweitert, das problem ist ja wie du schon erkannt hast das einige Kameramodelle die äquivalente Brennweite nicht in die Exif Daten (FocalLengthIn35mmFilm) abspeichern.
Ich habe das so umgangen das ich das Sensorformat auslese (FocalPlaneXResolution und FocalPlaneYResolution), die beiden werte sind in den Exif Standards enthalten und sind nicht Herstellerspezifisch daher sollte eigentlich eine jeden Kamera diese in die Exifdaten abspeichern.

Grundlagen ist das Kleinbildformat 36mm x 24mm die Diagonale = 43.2666153056 mm, das heißt:

 - das Sensorformat auslesen (FocalPlaneXResolution und FocalPlaneYResolution) allen angaben in den Exif sind in Inch,
 - die Diagonale berechnen,
 - Kleinbilddiagonale : Berechnete Diagonale = Factor
 - Brennweite laut EXIF ('FocalLength') mit dem Factor Multipizieren ergibt die die äquivalente Brennweite.
 - Äquivalente Brennweite noch auf 0 nach kommastellen Runden.
 - Ergebniss nach 'mm' umwandeln und Runden

so zum php teil, alle änderungen in php beziehen sich auf diese Modifikation:

1.) die Datenbank um 3 Feld erweitern:
Code: [Select]
ALTER TABLE `4images_images` ADD `image_FocalLengthIn35mmFilm` VARCHAR( 20 ) NOT NULL;
Code: [Select]
ALTER TABLE `4images_images_temp` ADD `image_FocalLengthIn35mmFilm` VARCHAR( 20 ) NOT NULL;
Code: [Select]
ALTER TABLE `4images_wordmatch` ADD `FocalLengthIn35mmFilm_match` TINYINT(1)  NOT NULL DEFAULT '0';
2.) suche in step.3):
$additional_image_fields['image_FocalLength'] = array($lang['exif_FocalLength'], "text"0);

füge darunter ein:
$additional_image_fields['image_FocalLengthIn35mmFilm'] = array($lang['exif_FocalLengthIn35mmFilm'], "text"0);

3.) suche in step 4.):
$exif_match['GPSTrack'] = "GPSTrack";

füge darunter ein:

  $exif_match
['FocalLengthIn35mmFilm'] = "FocalLengthIn35mmFilm";
  
$exif_match['FocalPlaneXResolution'] = "FocalPlaneXResolution";
  
$exif_match['FocalPlaneYResolution'] = "FocalPlaneYResolution";


4.) suche in step 4.):

if ($key == "DateTimeOriginal") {

ersetze es mit:

        
if($key == "Model") {
            
$model explode("/"$exif_info);
          
$exif_array[$exif_match['Model']] = $model[0];
        } 
        elseif (
$key == "DateTimeOriginal") {

suche

           $exif_array
[$exif_match[$key]] = round(($FocalLength[0] / $FocalLength[1])) . " mm";
        }

ersetze es mit:

          $exif_array
[$exif_match[$key]] = round(($FocalLength[0] / $FocalLength[1])) . " mm";
          
$FocalLength round(($FocalLength[0] / $FocalLength[1]));
        }      
        elseif(
$key == "FocalPlaneXResolution") {
          
$FocalPlaneXResolution explode("/"$exif_info);
        }
        elseif (
$key == "FocalPlaneYResolution") {
          
$FocalPlaneYResolution explode("/"$exif_info);
          
$exif_array[$exif_match['FocalLengthIn35mmFilm']] = round($FocalLength*(43.2666153056/((sqrt((pow($FocalPlaneXResolution[1],2))+(pow($FocalPlaneYResolution[1],2))))*.0254)))." mm";
        }
        elseif(
$key == "FocalLengthIn35mmFilm") {
          
$FocalLengthIn35mmFilm explode("/"$exif_info);
          
$exif_array[$exif_match['FocalLengthIn35mmFilm']] = round(($FocalLengthIn35mmFilm[0]))." mm ";
        } 

suche:

          $exif_array
[$exif_match[$key]] = $exif_info;
        }
      }
    }

füge darunter ein:

    
if(!isset($FocalLengthIn35mmFilm) && !isset($FocalPlaneXResolution)){
      if(isset(
$model[0]) && isset($FocalLength)){
      
        switch(
$model[0]){
          case 
"DSC-P100" $val 7.9; break;  
          case 
"Pro 815" $val 3.89; break;
          case 
"NIKON D300S" $val 1.5; break;
        }
        
         if(
$val 0){ 
           
$exif_array[$exif_match['FocalLengthIn35mmFilm']] = round($FocalLength $val) ." mm";
        }
      }
    }


5.) suche in step 5.):

"image_GPSTrack" => "phrase",

füge darunter ein:

"image_FocalLengthIn35mmFilm" => "phrase",

suche:

"image_GPSTrack" => "GPSTrack_match",

füge darunter ein:

"image_FocalLengthIn35mmFilm" => "FocalLengthIn35mmFilm_match",


6.) suche in step 6.)

$lang
['exif_FocalLength'] = "Brennweite (Objektiv):";

füge darunter ein:

$lang
['exif_FocalLengthIn35mmFilm'] = "Brennweite 35mm Äquivalent:";


das ergebnis kannst du dir hier ansehen.

so ich hoffe ich habe alles. :)

mfg Andi
« Last Edit: January 05, 2012, 09:56:33 PM by Rembrandt »

Offline VGerhard

  • Newbie
  • *
  • Posts: 31
    • View Profile
Re: [Mod] EXIF V1.7.10 Optional Googlemap
« Reply #21 on: November 13, 2011, 04:49:45 PM »
ich habe mal die Exif funktion um das 35mm Äquivalent erweitert, das problem ist ja wie du schon erkannt hast das einige Kameramodelle die äquivalente Brennweite nicht in die Exif Daten (FocalLengthIn35mmFilm) abspeichern.
Ich habe das so umgangen das ich das Sensorformat auslese (FocalPlaneXResolution und FocalPlaneYResolution), die beiden werte sind in den Exif Standards enthalten und sind nicht Herstellerspezifisch daher sollte eigentlich eine jeden Kamera diese in die Exifdaten abspeichern.
Hallo Andi,

dies läßt sich - zumindest bei meinen beiden Kameras - leider nicht realisieren. Die ziemlich neue Nikon D300s erzeugt zwar insgesamt 104 EXIF-Einträge, aber die beiden "FocalPlane..."-Werte sind nicht dokumentiert. Sie stellt jedenfalls den "FocalLengthIn35mmFilm"-Wert dar (anders als meine ältere Sony DSC-P100, die insgesamt lediglich 51 EXIF-Werte aufweist).

Ansonsten:
Bei den "FocalPlane..."-Werten gibt es offenbar keine Unterscheidung zwischen "Zoom" und "Digitalzoom", was natürlich die nach Deiner Formel errechneten 35-mm-Film-Werte entsprechend verfälschen würde.

Da aus den den o.g. EXIF-Tabellen leider der verwendete Sensor-Chip nicht erkennbar ist, bleibt für mich (bei einer einzigen Kamera ohne "FocalLengthIn35mmFilm"-Wert) zunächst nur die Möglichkeit, den Ausgabewert aus dem Eintrag "FocalLength" mit dem manuel einzufügenden Multiplikator in der funktions.php zu erzeugen. Soweit es sich - wie bei mir - nur um eine Kamera ohne "FocalLengthIn35mmFilm"-Werte handelt, muß ich auch nicht aufwendig das Kamera-Modell abfragen, wenn ich miit "IF..." dem positiven Wert meiner Nikon D300S (bzw. entsprechend anderen intelligenten Kameras) den Vortritt lasse und erst im "ELSEIF"-Fall den manuellen Wert erzeuge. Eine Kamera-Erkennung müßte ich also erst dann einbauen, wenn eine zweite ohne "FocalLengthIn35mmFilm"-Wert hinzu käme.

Alternativ könnte ich mir vorstellen, daß der 4images-User selbst solche Kameras in einer entsprechend zu ergänzenden Datenbank erfassen und dort auch den Multiplikator (oder ersatzweise die Auflösung) ablegen kann. Möglicherweise reicht sogar eine Übernahme der relativ wenigen Chip-Typen mit ihren Multiplikatoren in das php-Script. Nach meinen Informationen gibt es ja - inklusive "Vollbild" - nur 5 oder 6 verschiedene Multiplikatoren. - In beiden Fällen müßte dann das Plugin bei Fehlen der "FocalLengthIn35mmFilm"-Werte über ein entsprechendes Menü zur Auswahl des "passenden" Kamera- oder Chip-Typs auffordern.
___

Bei der Datum-Formatierung im Aufnahmedatum habe ich trotz umfangreicher Bastelei immer noch die ":", wo eigentlich "-" stehen sollten. Ich werde aber weiter tüfteln.

Frdl. Grüße

Gerd






Rembrandt

  • Guest
Re: [Mod] EXIF V1.7.10 Optional Googlemap
« Reply #22 on: November 13, 2011, 05:00:48 PM »
könntest du mir ein par bilder zukommen lassen wo das deiner meinung nach nicht enthalten ist?

Edit: habe mir gerade selber ein bild von der Nikon D300s heruntergeladen, funktioniert einwandfrei.

mfg Andi

Offline VGerhard

  • Newbie
  • *
  • Posts: 31
    • View Profile
Re: [Mod] EXIF V1.7.10 Optional Googlemap
« Reply #23 on: November 13, 2011, 11:53:26 PM »
könntest du mir ein par bilder zukommen lassen wo das deiner meinung nach nicht enthalten ist?
Edit: habe mir gerade selber ein bild von der Nikon D300s heruntergeladen, funktioniert einwandfrei.
Hallo,

habe eben nochmal einige EXIF-Daten durchgesehen. Um auszuschließen, daß ich vielleicht nicht alle Daten angezeigt bekomme, habe ich mir direkt "PhotoME" aus dem Internet geladen. Aber auch da finde ich sowohl zu Bildern der Nikon D300s als auch zur Sony DSC-P100 die "FocalPlane..."-Einträge nicht.

Zu "PhotoME" gehört u.a. ein Testbild von einer Nikon D80. Da sind alle Daten vollständig vorhanden. Zusätzlich habe ich eben noch Bilder der Samsung 815 Pro getestet. Auch dort finde ich die "FocalLine..."-Informationen. Offenbar sind die Hersteller-übergreifend immer unter den Tag-ID's A20E und A20F protokolliert. Sowohl bei der Nikon D80 als auch der bei Samsung 815 Pro hängt hinten am Tag-Name aber jeweils noch eine "2" dran.

Naja, bei den Bildern der Nikon D300s ist es ja kein Beinbruch, da die KB-Brennweite sowieso separat vorhanden ist. Und ich gehe davon aus, daß Du für solche Fälle sowieso zunächst auf bereits vorhandene Daten zugreifst bzw. bei Kameras, die überhaupt keine Informationen liefern, das Feld ganz leer läßt. So lange ich zu den den vorliegenden Nikon- und Sony-Bildern nicht sicher davon ausgehen kann, daß die gewünschten Werte korrekt erzeugt werden können, lasse ich es vorläufig bei meiner funktionierenden Version.

Ich werde Dir gleich noch jeweils ein Bild der o.g. Kameras zusenden.

Beste Grüße

Edit:
Anbei die angekündigten Bilder.


Gerd
« Last Edit: November 14, 2011, 12:10:37 AM by VGerhard »

Rembrandt

  • Guest
Re: [Mod] EXIF V1.7.10 Optional Googlemap
« Reply #24 on: November 14, 2011, 07:23:42 PM »
hätte ich nicht gedacht das bei den sony das sensor format nicht mitgeliefert wird, klumpert...
bei den anderen funktioniert es einwandfrei, meinen code oben habe ich nochmal nachgebessert :)
kannst dir es eh ansehn über den link in meinen vorherigen post.

mfg Andi

Offline VGerhard

  • Newbie
  • *
  • Posts: 31
    • View Profile
Re: [Mod] EXIF V1.7.10 Optional Googlemap
« Reply #25 on: November 14, 2011, 09:12:12 PM »
hätte ich nicht gedacht das bei den sony das sensor format nicht mitgeliefert wird, klumpert...
bei den anderen funktioniert es einwandfrei, meinen code oben habe ich nochmal nachgebessert :)
kannst dir es eh ansehn über den link in meinen vorherigen post.
mfg Andi
Vielen Dank,

ja, das sieht ja hervorragend aus. Werde ich gleich noch testen..

Ich schätze, zu der Sony werden sich auch noch andere Modelle verschiedener Hersteller gesellen. Ich werde innerhalb des Verwandten- und Freundeskreises mal Testbilder einsammeln, um der Sache auf den Grund zu gehen.

In meiner eigenen Anwendung habe ich es zunächst nur mit den drei o.g. Kamera-Typen zu tun. Innerhalb Deiner aktualisierten Script-Zeilen müßte man nun noch innerhalb der "FocalLengthIn35mmFilm"-Abfrage für den Fall, daß sich aus der vorangehenden Berechnung sowie aus den EXIF-Daten selbst kein positiver Wert ergibt, als "letzte Rettung" die Möglichkeit nutzen, den Wert über eine Multiplikation des "FocalLength"-Wertes mit dem - manuell in das Script einzufügenden -  "Crop-Faktor" (bei der Sony DSC-P100 z.B. 4,8) zu erzeugen.

Eleganter wäre es, evtl. in "functions.php" eine Tabelle einfügen, in der die betroffenen "dummen" Kamera-Modelle mit ihrem Crop-Faktor stehen. Da zumindest bei der Sony das Kamera-Modell korrekt in EXIF benannt ist, könnte der Multiplikator dann automatisch aus dieser Tabelle entnommen werden. Die 4images-User könnten die Tabelle ihrer eigenen Galerie selbst ergänzen, sollten neue Daten aber auch z.B. an Dich weitergeben, damit sie in die nächsten Versionen aufgenommen werden können.

Außerdem wäre es dann sicher sehr hilfreich im Forum ein entsprechendes Thema einzurichten, um auch auf diesem Wege korrekte Modell-Bezeichnungen mit ihren Crop-Werten zu sammeln.

Nach gerade einer Woche mit anfangs skeptischem Hereinschnüffeln bin ich - auch dank Deiner Hilfe - inzwischen ein absoluter 4images-Fan !!!
___

Edit (15.11.2011, 16.20 Uhr):

So, nachdem ich aus Deinen letzten Ergänzungen endlich erkannt habe, daß man die aus EXIF auszulesenden Werte wohl mehrfach korrigieren kann, bevor sie in die Datenbank geschrieben werden, habe ich es einfach mal mit folgender Zeile mit dem Crop-Faktor der Sony DSC-P100 versucht. Andere User können brauchen diesen Wert nur passend zu Ihrem Kamera-Modell ändern. Auf diese Weise kann man natürlich nur Werte für eine Kamera berechnen, bzw. für verschiedene Kameras mit identischem Crop-Faktor.

Diese habe ich in Deiner obigen MOD-Ergänzung wie folgt (rot gekennzeichnet) eingefügt:

4.) suche in step 4.): = includes/functions.php

                $exif_array[$exif_match[$key]] = round(($FocalLength[0] / $FocalLength[1])1) . " mm";
        }

ersetze es mit:

                $exif_array[$exif_match[$key]] = round(($FocalLength[0] / $FocalLength[1]) 1 ) . " mm";
                $FocalLength = $exif_array[$exif_match[$key]];
               $exif_array[$exif_match['FocalLengthIn35mmFilm']] = round(($FocalLength * 4.8 )) . " mm";

(Den Wert "FocalLength" haben ich zuvor auf eine Stelle gerundet, damit bei zwei aufeinander folgenden Rundungen nicht zu große Abweichungen entstehen.)

Das klappt einwandfrei. Und ich habe auch den Eindruck, daß dies keine anderen Werte durcheinander bringt. Bei anderen Kamera-Modellen mit detaillierteren EXIF-Infos wird der mit obiger Zeile erzeugte Wert ja in den nachfolgenden Zeilen ersetzt. Möglicherweise findest Du als Fachmann aber noch ein "Haar in der Suppe".

mfg
Gerd
« Last Edit: November 15, 2011, 04:41:35 PM by VGerhard »

Offline VGerhard

  • Newbie
  • *
  • Posts: 31
    • View Profile
Re: [Mod] EXIF V1.7.10 Optional Googlemap
« Reply #26 on: November 17, 2011, 12:53:22 PM »
Hallo Andi,

es gibt offensichtlich größere Probleme beim wiederholten Ausführen von Create EXIF DATA. In allen nachfolgend beschriebenen Fällen habe ich den Index vorher geleert.

1.
Die EXIF-Daten werden nicht - wie von Dir beschrieben - direkt beim Upload, sondern erst bei Aufruf von Create EXIF DATA ausgelesen und in die Datenbank geschrieben. Direkt nach dem Upload erscheinen also zum jeweiligen Bild lediglich die allgemeinen Bild-Informationen ohne EXIF. Hängt das evtl. damit zusammen, daß ich die darzustellenden Bilder und Thumbnails bereits im endgültigen Format uploade, also den Resizer und Thumbnailer nicht aktiviere...?

2.
Wiederhole ich nach einem einmaligen EXIF-Durchlauf diesen für ein einziges Bild, wird Create EXIF DATA vollkommen einwandfrei ausgeführt. Das funktioniert sowohl mit einem einzigen Bild in der Datenbank als auch mit dem jeweils zuletzt geladenen Bild (also der höchsten ID).

3.
Sobald beim wiederholten Ausführen von Create EXIF DATA allerdings mehrere Bilder betroffen sind, treten Datenbank-Fehler auf, die ich Dir unten mal reinkopiert habe. Interessant ist, daß das jeweils erste Bild korrekt abgearbeitet wird, also nur die Folgebilder diesen ERROR auslösen (siehe unten).

4.
Hast Du einen Tipp, wie ich diesen Fehler verhindern bzw. umgehen kann?
Ich denke, wenn man in der Eingabe-Maske von Create EXIF DATA nicht nur den "von"-Wert eingeben, sondern das Einlesen und Speichern gezielt auf ein einziges Bild innerhalb des vorhandenen ID-Bereichs beschränken könnte, würde der beschriebene Fehler nicht auftreten.

_________________________________________________

Fehlermeldungen
_________________________________________________

Volltext-Indizierung zwischen ID 0 und 7:

Processing image Testbild_01, ID 5... ... EXIF UPDATE
Processing image Testbild_02, ID 6... ... EXIF UPDATE

DB Error: Bad SQL Query: REPLACE INTO 4images_wordmatch (image_id, word_id, name_match, desc_match, keys_match, Make_match, Model_match, DateTimeOriginal_match, ISOSpeedRatings_match, ExposureTime_match, FNumber_match, FocalLength_match, FocalLengthIn35mmFilm_match, ExposureBiasValue_match, ApertureValue_match, MaxApertureValue_match, MeteringMode_match, Flash_match, ExposureProgram_match, ExposureMode_match, WhiteBalance_match, GPSLatitude_match, GPSLatitudeRef_match, GPSLongitude_match, GPSLongitudeRef_match, GPSAltitude_match, GPSTrack_match) VALUES (6, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (6, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (6, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (6, 6, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (6, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (6, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (6, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0), (6, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0)
Column count doesn't match value count at row 1
Processing image Testbild_03, ID 7... ... EXIF UPDATE

DB Error: Bad SQL Query: REPLACE INTO 4images_wordmatch (image_id, word_id, name_match, desc_match, keys_match, Make_match, Model_match, DateTimeOriginal_match, ISOSpeedRatings_match, ExposureTime_match, FNumber_match, FocalLength_match, FocalLengthIn35mmFilm_match, ExposureBiasValue_match, ApertureValue_match, MaxApertureValue_match, MeteringMode_match, Flash_match, ExposureProgram_match, ExposureMode_match, WhiteBalance_match, GPSLatitude_match, GPSLatitudeRef_match, GPSLongitude_match, GPSLongitudeRef_match, GPSAltitude_match, GPSTrack_match) VALUES (7, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (7, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (7, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0), (7, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0), (7, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0)
Column count doesn't match value count at row 1

EXIF Daten erstellt!
_________________________________________________

Volltext-Indizierung zwischen ID 6 und 7:

Processing image Testbild_01, ID 6... ... EXIF UPDATE
Processing image Testbild_02, ID 7... ... EXIF UPDATE

DB Error: Bad SQL Query: REPLACE INTO 4images_wordmatch (image_id, word_id, name_match, desc_match, keys_match, Make_match, Model_match, DateTimeOriginal_match, ISOSpeedRatings_match, ExposureTime_match, FNumber_match, FocalLength_match, FocalLengthIn35mmFilm_match, ExposureBiasValue_match, ApertureValue_match, MaxApertureValue_match, MeteringMode_match, Flash_match, ExposureProgram_match, ExposureMode_match, WhiteBalance_match, GPSLatitude_match, GPSLatitudeRef_match, GPSLongitude_match, GPSLongitudeRef_match, GPSAltitude_match, GPSTrack_match) VALUES (7, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (7, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (7, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0), (7, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0), (7, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0)
Column count doesn't match value count at row 1

EXIF Daten erstellt!
_________________________________________________

Volltext-Indizierung zwischen ID 7 und 7 (Einzelbild, also keine Fehler-, sondern nur Statusmeldung):

Processing image Testbild_03, ID 7... ... EXIF UPDATE

EXIF Daten erstellt!
_________________________________________________


mfg
Gerd

Offline VGerhard

  • Newbie
  • *
  • Posts: 31
    • View Profile
Re: [Mod] EXIF V1.7.10 Optional Googlemap
« Reply #27 on: November 18, 2011, 03:29:22 PM »
Hallo Andi,

die Berechnung der äquivalenten KB-Brennweite für verschiedene Kamera-Modelle habe ich in "functions.php" nun wie folgt gelöst und zunächst den drei angegebenen Typen (Sony, Nikon, Samsung) getestet. Dabei habe ich bei der Samsung 815 Pro und der Nikon vorübergehend das Auslesen der vorhandenen "FocalLengthIn35mmFilm"-Werte deaktiviert. Weitere Kamera-Typen können vom User jederzeit mit ihren Crop-Werten eingefügt werden. Falls in meinen Zeilen noch etwas fachmännisches "Feintuning" möglich oder erforderlich ist, bitte ich um einen entsprechenden Hinweis.
___


 
elseif ($key == "FocalLength") {
            
$FocalLength explode("/"$exif_info);
            
$exif_array[$exif_match[$key]] = round(($FocalLength[0] / $FocalLength[1]),1) . " mm";

// ------------------------------------------------------------------------------------------------------------
//   Berechnung Brennweite 35-mm-Film aus Objektiv-Brennweite    
//   für Kameras, die den EXIF-Wert "FocalLengthIn35mmFilm" nicht darstellen.        
//   Zeilen für zusätzliche Kamera-Modelle einfügen:                    
//   - genaue Schreibweise des Modells aus ACP "Bild bearbeiten" übernehmen         
//   - Crop-Faktor der Kamera steht meist in der Bedienungsanleitung     
//   - ansonsten Crop-Faktor aus der angegebenen Vergleichs-Brennweite berechnen 
// ------------------------------------------------------------------------------------------------------------

            
$FocalLength $exif_array[$exif_match[$key]];
            
$kameratyp $exif_match['Model'];

               
$CropFaktor 1;
               if (
$kameratyp "DSC-P100") {$CropFaktor 4.786; }
               if (
$kameratyp "NIKON D300S") {$CropFaktor 1.5; }
               if (
$kameratyp "Pro 815") {$CropFaktor 3.89; }
                   
$exif_array[$exif_match['FocalLengthIn35mmFilm']] = round(($FocalLength $CropFaktor),0) . " mm";
         }

// ------------------------------------------------------------------------------------------------------------
//   Einfügung Brennweite 35 mm-Film aus vorhandenem EXIF-Eintrag
//   ein evtl. per Crop-Faktor berechneter Wert wird überschrieben    
// ------------------------------------------------------------------------------------------------------------

        
elseif ($key == "FocalLengthIn35mmFilm") {
            
$FocalLengthIn35mmFilm explode("/"$exif_info);
            
$exif_array[$exif_match[$key]] = round(($FocalLengthIn35mmFilm[0]),0) . " mm";
        }
...

mfg

Gerd

php Tags eingefügt @Rembrandt

Edit 19.11.2011 Von Gerd:

Tut mir sehr leid. Theoretisch scheint alles zu stimmen, aber in der Praxis funktioniert meine laienhafte Lösung offenbar nicht. Das Problem, das ich bisher nicht lösen konnte, liegt bei der Übernahme des Kamera-Typs. Irgendwie war ich doch wohl zu optimistisch.
« Last Edit: November 19, 2011, 08:16:51 PM by VGerhard »

Rembrandt

  • Guest
Re: [Mod] EXIF V1.7.10 Optional Googlemap
« Reply #28 on: November 20, 2011, 09:14:56 AM »
Hi!

so ich habe meinen Code oben geändert http://www.4homepages.de/forum/index.php?topic=29519.msg159818#msg159818

in den Datenbank felder hatte ich leider einen Fehler (step 1.)), die Feldnamen stimmten nicht.
Kontrolliere das jetzt bei die noch einmal nach und ändere gegebenen falls die Feldnamen, sorry.

unten in step 4.) habe ich jetzt eine neue Funktion eingefügt, dort wird jetzt wenn keine "xy auflösung" oder "FocalLengthIn35mmFilm" in den exif vorhanden sind die 35mm Äquivalente Brennweite berechnet,
 sofern in den Exifs das "Model" vorhanden ist.
dort kannst du jetzt weitere "Model" Namen einfügen.
die beiden werte:

          
case "Pro 815" $val 3.89; break;
          case 
"NIKON D300S" $val 1.5; break;

sind nicht notwendig, die werden sowieso aus der "xy auflösung" oder "FocalLengthIn35mmFilm" ermittelt, ich habe sie nur eingefügt damit du siehst wie der Code weiter fortgesetzt wird damit du weitere Kamera Modele einfügen kannst.

zu deine vorherigen Problem mit der Fehlermeldung, kontrolliere nochmal mal deine Datenbankfelder (wordmatch) und die config.php (step.5).

und noch etwas, wenn du php Code hier postet verwende bitte den BBCode Tag "php", damit bleibt das etwas über sichtlicher.

mfg Andi

Offline VGerhard

  • Newbie
  • *
  • Posts: 31
    • View Profile
Re: [Mod] EXIF V1.7.10 Optional Googlemap
« Reply #29 on: November 20, 2011, 04:37:33 PM »
Hallo Andi,

herzlichen Dank für die Lösung. Es freut mich, daß ich - wenn auch nur im Ansatz - schon auf dem richtigen Weg war. Aber ohne Deine Hilfe hätte ich das nicht realisieren können.

Sofern de erforderlichen EXIF-Dateien fehlen und für eine solche Kamera manuell kein Crop-Faktor eingetragen wird, erzeugt diese Routine einen Datenbank-Eintrag und eine Ausgabe von "0 mm". Dies ließ sich aber sehr leicht wie folgt beheben:

Suchen in /plugins/functions.php nach:
           $exif_array[$exif_match['FocalLengthIn35mmFilm']] = round($FocalLength $val) ." mm";

Ersetzen durch:
        if($val 0){ 
           
$exif_array[$exif_match['FocalLengthIn35mmFilm']] = round($FocalLength $val) ." mm";
        }


Nachdem ich die entsprechenden Ursprungs-Scripte noch einmal erneut mit den MOD-Inhalten ergänzt habe, wird nun auch kein ERROR mehr angezeigt.

Hier mal die URL zu der Galerie-Seite, die ich für meinen Sohn eingerichtet habe:
www.thomas-gehle.de

Servus

Gerd
« Last Edit: November 20, 2011, 06:08:30 PM by VGerhard »