Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem 4Images bzw PHP


DigiAchim
08.01.2008, 17:52
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

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

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

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



muß mit diesem ersetzt werden

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
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
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.

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
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
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

$exif_match['FocalLength'] = "focallen";

diese Einfügen

$exif_match['ExposureProgram'] = "Programm";

da die Werte nur als Zahlenwerte Dargestellt werden muß

hinter
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 )

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
$lang['exif_focallen'] = "Brennweite:";

diese Zeile eingefügt werden
$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 :(

DigiAchim
09.01.2008, 17:01
Ui schon Ausprobiert?

klasse das es funzt

ps bin am Blitz dran

astronautix
09.01.2008, 17:20
ps bin am Blitz dran

Ich auch.. Leider wird "Blitz:" nicht angezeigt. Das Auslesen der EXIF-Daten selber geht.

Das muss ich wohl etwas falsch eingetragen haben.

in der main.php habe ich eingetragen:

$lang['exif_Flash'] = "Blitz:";

Das erscheint aber nicht :shock:

astronautix
09.01.2008, 17:44
Habe den Übeltäter erwischt. War ein Tippfehler in der main.php
Somit läuft alles.

Achim, das war gute Arbeit!!

@Jürgen - Du brauchst nichtm ehr zu suchen!

Alles weitere bekomme ich jetzt auch alleine hin.

Jerichos
09.01.2008, 21:45
Zu spät erst gelesen. :roll:

elseif ($key == "WhiteBalance") {
if($val==0) $val = "Auto";
if($val==1) $val = "Tageslicht";
if($val==2) $val = "Leuchtstofflampe";
if($val==3) $val = "Kunstlicht";
if($val==4) $val = "Blitz";
if($val==9) $val = "Direktes Sonnenlicht";
if($val==10) $val = "Bewölkter Himmel";
if($val==11) $val = "Schatten";
$exif_array[$exif_match[$key]] = $val;
}
Ohne Gewähr. Am besten eine Testreihe aufnehmen. Beim Blitz das gleiche.

astronautix
09.01.2008, 21:53
Hallo Jürgen,
vielen Dank! Ich habe es in der Zeischenzeit schon selber hin bekommen.
Funktioniert sogar. Was nicht geht ist die Art der Belichtungsmessung.
Das wird bei den Canonbildern nicht ausgelesen. Bei den D200 Bildern wird es angezeigt.
Egal, die wichtigsten Daten werden angezeigt, das reicht.

Jerichos
09.01.2008, 21:54
Was nicht geht ist die Art der Belichtungsmessung.
Das wird bei den Canonbildern nicht ausgelesen. Bei den D200 Bildern wird es angezeigt.
Egal, die wichtigsten Daten werden angezeigt, das reicht.
Da muss man etwas aufpassen. Nicht jeder Hersteller schreibt die gleichen Daten in die gleichen Labels. Da gibt es leider Unterschiede.