SonyUserforum

SonyUserforum (https://www.sonyuserforum.de/forum/index.php)
-   Café d`Image (https://www.sonyuserforum.de/forum/forumdisplay.php?f=94)
-   -   Problem 4Images bzw PHP (https://www.sonyuserforum.de/forum/showthread.php?t=47301)

DigiAchim 08.01.2008 17:52

Problem 4Images bzw PHP
 
Hallo
Nach dem Hack der 4Images Gallerien im November
hat Prixa ja auf die Version 1.7.4 upgedatet

jetzt erst war mir Aufgefallen das die Belichtungszeiten über 1 Sekunde nicht mehr Richtig angezeigt werden

hatte früher die Angepasste exif Datei hier aus dem Forum am Laufen

bringe es aber nicht zustande die Exifanzeige wieder gerade zu biegen

kann mir hier vielleicht einer Helfen ? Glaube Manni und Basti hatten die Exif.php und Functions.php damals angepasst

hier der Teil der Funktionsp.hp mit der Exif der Belichtungszeit
Code:

function get_exif_info($exif) {
  $exif_match = array();
  $exif_match['Make'] = "make";
  $exif_match['Model'] = "model";
  $exif_match['DateTimeOriginal'] = "datetime";
  $exif_match['ISOSpeedRatings'] = "isospeed";
  $exif_match['ExposureTime'] = "exposure";
  $exif_match['FNumber'] = "aperture";
  $exif_match['FocalLength'] = "focallen";

  $exif_array = array();
  if (is_array($exif)) {
    foreach ($exif as $key => $val) {
      if (isset($exif_match[$key])) {
        $exif_info = $val;
        if ($key == "DateTimeOriginal") {
          $exif_array[$exif_match[$key]] = preg_replace("/([0-9]{4}):([0-9]{2}):([0-9]{2})/", "\\3.\\2.\\1", $exif_info);
        }
        elseif ($key == "ExposureTime") {
                  $exposure = explode("/", $exif_info);
          $exif_array[$exif_match[$key]] = "1/" . ($exposure[1] / $exposure[0]);
        }
        elseif ($key == "FNumber") {
                  $aperture = explode("/", $exif_info);
          $exif_array[$exif_match[$key]] = "F/" . ($aperture[0] / $aperture[1]);
        }
        elseif ($key == "FocalLength") {
                  $focalLen = explode("/", $exif_info);
          $exif_array[$exif_match[$key]] = ($focalLen[0] / $focalLen[1]) . "mm";
        }
        else {
          $exif_array[$exif_match[$key]] = $exif_info;
        }
      }
    }
  }
  return $exif_array;
}

Im Bereich ExposureTime

müßte ja der Alte Code angepasst eingefügt werden

nur bring ich das nicht richtig hin vielleicht kann mir ja jemand helfen

hier der alte Code
Code:

case "ExposureTime":
          $valpieces = explode("/",$val);
          $val = round(($valpieces[1] / $valpieces[0]), 2);
          if ($val < 1) {
                    $val = 1 / $val;
                  $val = round($val, 0) . " Sekunden";
          } elseif ($val == 1) {
                    $val = 1 / $val;
                  $val = round($val, 0) . " Sekunde";
          } elseif ($val == 1.5 || $val == 2.5) {
                    $val = "2/" . 2 * $val . " Sekunden";
          } else {
              $val = "1/" . $val . " Sekunde";
          }


DigiAchim 08.01.2008 20:05

Hätte euch schon vor 2 Tagen fragen sollen

nach meiner Frage hab ich mich in aller Ruhe noch mal drangesetzt
nach der Machschaft Learning by Doing

und habs jetzt doch hinbekommen
wenn man erst mal weiß wie es geht war es garnicht so schwer

hier die Änderungen damit Belichtungszeiten größer 1 Sekunde auch korekt dargestellt werden und zb 30 Sekunden nicht als 1/0.0333333 dargestellt werden

diesen Code in der Funktions.php
Code:

        elseif ($key == "ExposureTime") {
                  $exposure = explode("/", $exif_info);
          $exif_array[$exif_match[$key]] = "1/" . ($exposure[1] / $exposure[0]);
        }


muß mit diesem ersetzt werden
Code:

        elseif ($key == "ExposureTime") {
                  $exposure = explode("/", $exif_info);

                  $val = round(($exposure[1] / $exposure[0]), 2);
                        if ($val < 1) {
                                        $val = 1 / $val;
                                        $val = round($val, 0);
                                        $exif_array[$exif_match[$key]] =  $val . "  Sekunden";
                        } elseif ($val == 1) {
                                            $val = 1 / $val;
                                          $val = round($val, 0);
                                        $exif_array[$exif_match[$key]] =  $val . "  Sekunde";
                        } else {
                                          $exif_array[$exif_match[$key]] =  "1/" . $val . "  Sekunde";
                        }
        }


astronautix 09.01.2008 13:55

Hallo Achim,
leider sind die geamten EXIFs in der neuen 1.7.4 Version nicht mehr so komplett wie in den älteren Versionen mit dem Exif-Mod.

Bisher ist es mir nicht gelungen mehr EXIFs dazustellen, als Version 1.7.4 von Haus aus mitbringt.

Deine kleine Änderung werde ich auf jeden Fall einpflegen. Danke für den Hinweis.

Weiter werden gesetzte Pfade aus älteren Versionen auch nicht mehr oder nur teilweise übernommen :(.
Nicht immer ist neu auch besser.

Jerichos 09.01.2008 14:04

In der 1.7.4 gibt es die exif.php nicht mehr, sondern die Funktionen sind in die functions.php gewandert.
Dort kannst Du aber alle weiteren Exif-Daten ausgeben lassen, wie sonst auch. Du musst halt nur wissen, wie das Label heißt.
Schreib einfach mal auf, welche Daten Du früher hattest, dann kriegen wir das sicher gemeinsam hin. :top:

astronautix 09.01.2008 14:19

Zitat:

Zitat von Jerichos (Beitrag 587832)
Schreib einfach mal auf, welche Daten Du früher hattest, dann kriegen wir das sicher gemeinsam hin. :top:

Oft habe ich schon im Forum von 4homepages.de danach gesucht. Auch andere haben diese Frage dort schon gestellt.
Eine Antwort dazu gab es nicht, nur der Hinweis auf den "alten" EXIF-Mod.

Leider sieht der EXIF-Part in der functions.php überhaupt nicht mehr so aus wie in der exif.php.

Schön wäre die Informationen, ob ein Blitz zum Einsatz kam, der Weißabgleich und Art der Belichtungsmessung (automatisch oder Manuell).

Gelungen ist mir das noch nicht und ich habe auch noch keine 1.7.4 Version gesehen, bei der das ging.

Jerichos 09.01.2008 14:38

Zitat:

Zitat von astronautix (Beitrag 587849)
Leider sieht der EXIF-Part in der functions.php überhaupt nicht mehr so aus wie in der exif.php.

Jein. Sieht anders aus, aber im Prinzip bleibt die Abfrage schon sehr ähnlich.

Zitat:

Zitat von astronautix (Beitrag 587849)
Schön wäre die Informationen, ob ein Blitz zum Einsatz kam, der Weißabgleich und Art der Belichtungsmessung (automatisch oder Manuell).

Gelungen ist mir das noch nicht und ich habe auch noch keine 1.7.4 Version gesehen, bei der das ging.

Also ich hab ohne große Probleme bei meinem 1.7.4 neue Daten hinzufügen können. ich guck mal, was sich machen lässt. Das kann ich aber nur von zu Hause aus. Vielleicht schafft es Manni auch noch, sich ein paar Gedanken zu machen. :top:

ManniC 09.01.2008 14:44

Zitat:

Zitat von Jerichos (Beitrag 587868)
Vielleicht schafft es Manni auch noch, sich ein paar Gedanken zu machen. :top:

Normalerweise gerne, in diesem Moment leider nicht :oops: Du hast also gute Chancen auf den Tempopunkt ;)

astronautix 09.01.2008 15:07

Zitat:

Zitat von Jerichos (Beitrag 587868)
Also ich hab ohne große Probleme bei meinem 1.7.4 neue Daten hinzufügen können. ich guck mal, was sich machen lässt. Das kann ich aber nur von zu Hause aus. Vielleicht schafft es Manni auch noch, sich ein paar Gedanken zu machen. :top:

Hallo Jürgen,
das ist sehr nett von Dir, vielen Dank :!: :top:

DigiAchim 09.01.2008 16:42

Hab noch mal ein wenig Ausprobiert und es Geschafft
das Aufnahme Programm mit reinzubekommen

in der funktions.php
unter der Zeile

Code:

  $exif_match['FocalLength'] = "focallen";
diese Einfügen

Code:

$exif_match['ExposureProgram'] = "Programm";
da die Werte nur als Zahlenwerte Dargestellt werden muß

hinter
Code:

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

dieser Code eingefügt werden ( dieser Stammt aus der alten exif.php )

Code:

        elseif ($key == "ExposureProgram") {
            if($val==1) $val = "Manuell";
            if($val==2) $val = "Programmautomatik";
            if($val==3) $val = "Zeitautomatik";
            if($val==4) $val = "Blendenautomatik";
            if($val==5) $val = "Stilleben";
            if($val==6) $val = "Sport";
            if($val==7) $val = "Portrait";
            if($val==8) $val = "Landschaft";
            $exif_array[$exif_match[$key]] =  $val;
        }

in der Datei 4images\lang\deutsch\main.php

muß hinter
Code:

$lang['exif_focallen'] = "Brennweite:";
diese Zeile eingefügt werden
Code:

$lang['exif_Programm'] = "Programm:";

astronautix 09.01.2008 16:55

Hallo Achim,
super, das funktioniert. Da habe ich schon einiges ausprobiert, es aber nicht hinbekommen.
Nun sehe ich auch, was ich vergessen habe. Es ist der fehlende Eintrag in der main.php :(


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:30 Uhr.