Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.
Seiten: 1
#1 08. Januar 2017 15:22
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.017
- Webseite
Exif-Daten von Bildern auslesen und anzeigen
Ihr kennt doch die Portale, die Bilder zum Download anbieten, wie zum Beispiel Pixabay. In der Detailansicht werden dann diverse Daten zum Bild angeboten, die von der Kamera über die Auflösung, Brennweite und Belichtungsdauer bis hin zu den GPS-Koordinaten uvm. gehen können. Kommt ziemlich professionell rüber.
Lässt sich auch mit CMSMS einfach umsetzen.
Angenommen, ihr habt bereits eine Bilder-Galerie und wollt diese mit einem derartigen Feature aufrüsten. Schlüssel hierzu ist der PHP-Befehl exif_read_data(). Dieser liest sämtliche vorhandenen Exif-Daten eines Bildes aus und liefert sie in einem Array zurück. Exif-Daten sind die Meta-Daten eurer Bilder.
Funktioniert praktisch in CMSMS so
{$exif = exif_read_data({$ipath}, 'IFD0')}
Hinter $ipath verbirgt sich der Systempfad des Bildes, NICHT die URL. Wie ihr eine URL in den Systempfad konvertieren könnt, habe ich hier gezeigt
https://www.cmsmadesimple.de/forum/view … hp?id=4963
Vor dem praktischen Einsatz solltet ihr allerdings eure Bilder prüfen, welche EXIF-Daten vorhanden sind. Diese sind zwar grundsätzlich standardisiert, aber da hat jeder Kamera-Hersteller so seine eigenen Vorstellungen, was geschrieben wird.
Funktioniert in CMSMS so (nach vorstehendem Befehl einfügen)
<pre>{$exif|print_r}</pre>
Der Output sah in meinem Fall so aus
Array
(
[FileName] => Tilli.jpg
[FileDateTime] => 1419676580
[FileSize] => 237278
[FileType] => 2
[MimeType] => image/jpeg
[SectionsFound] => ANY_TAG, IFD0, COMMENT, EXIF
[COMPUTED] => Array
(
[html] => width="1280" height="960"
[Height] => 960
[Width] => 1280
[IsColor] => 1
[ByteOrderMotorola] => 0
)[Make] => VTech
[Model] => Kidizoom camera
[Exif_IFD_Pointer] => 72
[COMMENT] => Array
(
[0] => GPEncoder
)[DateTimeOriginal] => 2014:12:27 11:36:20
)
Yep, richtig gesehen - für dieses HowTo musste der Einfachheit halber die Kamera meiner kleinen Tochter herhalten . Bei Profi-Modellen sind es natürlich deutlich mehr Daten.
Praktisch an dieser Ausgabe, dass man bereits hier erkennen kann, wie man die Elemente des generierten $exif Arrays zur Anzeige bringt. So findet sich z.Bsp. für das Kamera-Modell dieser Eintrag
[Model] => Kidizoom camera
Angezeigt werden kann dies mit
{$exif.Model}
Manche Werte wie zum Beispiel der Zeitstempel oder die Dateigröße liegen aber als unformatierte Rohdaten vor, weshalb sie für die Anzeige noch etwas überarbeitet werden müssen.
[FileDateTime] => 1419676580
[FileSize] => 237278
Der Zeitstempel ist ein Unix Zeitstempel und kann so über den in CMSMS mitgelieferten Modifikator cms_date_format formatiert werden.
{$exif.FileDateTime|cms_date_format:'%d. %B %Y'}
Wie sich die Dateigröße formatieren lässt, hab ich hier gezeigt
https://www.cmsmadesimple.de/forum/view … hp?id=4770
{$exif.FileSize|formatsize}
Zusammengefasst in einem erweiterungsfähigen Basis-Script sieht das dann so aus
{$ipath = "{$smarty.server.DOCUMENT_ROOT}{$iurl|parse_url:$smarty.const.PHP_URL_PATH}"}
{$exif = exif_read_data({$ipath}, 'IFD0')}
<p>Erstellt: {$exif.FileDateTime|cms_date_format:'%d. %B %Y'}</p>
<p>Auflösung: {$exif.COMPUTED.Width} x {$exif.COMPUTED.Height}</p>
<p>Dateigröße: {$exif.FileSize|formatsize}</p>
<p>Kamera: {$exif.Make} {$exif.Model}</p>
Ausgegeben wird dann dies
Erstellt: 27. Dezember 2014
Auflösung: 1280 x 960 Pixel
Dateigröße: 231.72 Kb
Kamera: VTech Kidizoom camera
Ergänzen könnte man das Script um eine Prüfung, ob die EXIF Erweiterung aktuell auf eurem Host bzw. Server geladen ist. Dies lässt sich über eine Prüfung der Existenz der genutzten Funktion erledigen
{if function_exists('exif_read_data')}
...
{/if}
Zudem sollte man bei kritischen EXIF-Daten (also Daten, die nicht in jedem Bild vorhanden sind), vorher dessen Existenz prüfen
{if $exif.Make && $exif.Model}
<p>Kamera: {$exif.Make} {$exif.Model}</p>
{/if}
Das komplette Script sähe in diesem Fall so aus
{if function_exists('exif_read_data')}
{$ipath = "{$smarty.server.DOCUMENT_ROOT}{$iurl|parse_url:$smarty.const.PHP_URL_PATH}"}
{$exif = exif_read_data({$ipath}, 'IFD0')}
<p>Erstellt: {$exif.FileDateTime|cms_date_format:'%d. %B %Y'}</p>
<p>Auflösung: {$exif.COMPUTED.Width} x {$exif.COMPUTED.Height}</p>
<p>Dateigröße: {$exif.FileSize|formatsize}</p>
{if $exif.Make && $exif.Model}
<p>Kamera: {$exif.Make} {$exif.Model}</p>
{/if}
{/if}
Viel Spaß damit!
Offline
#2 08. Januar 2017 15:50
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.017
- Webseite
Re: Exif-Daten von Bildern auslesen und anzeigen
Übrigens, falls ihr das Script an mehreren Stellen eurer Webseite einsetzen wollt, bietet sich natürlich auch der Einsatz dieses Tricks an
https://www.cmsmadesimple.de/forum/viewtopic.php?id=572
So müsst ihr nicht immer den ganzen Block auf's Neue einfügen
1. Falls nicht vorhanden, Verzeichnis /tmp/templates anlegen
2. Snippet in einer Datei als exif.tpl speichern
3. exif.tpl nach /tmp/templates hochladen
4. Aufruf an den gewünschten Stellen mittels
{include file='exif.tpl'}
Offline
#3 10. Januar 2017 22:50
- pWorker
- probiert CMS/ms aus
- Registriert: 20. Oktober 2016
- Beiträge: 78
Re: Exif-Daten von Bildern auslesen und anzeigen
Der Zeitstempel ist ein Unix Zeitstempel und kann so über den in CMSMS mitgelieferten Modifikator cms_date_format formatiert werden.
Die Info brauchte ich für ein anderes Problem. Immer wieder hilfreich hier im Forum rumzulungern
Offline
#4 11. Januar 2017 10:27
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.017
- Webseite
Re: Exif-Daten von Bildern auslesen und anzeigen
Die Info brauchte ich für ein anderes Problem.
Naja, bißl sind wir hier auch auf externen Input angewiesen.
Manche Dinge sind zwar banal, aber vielen so oder zumindest in deren möglichen Anwendungen nicht bekannt. Von daher isses für diejenigen, die sich schon länger damit beschäftigen, immer die Frage, welche HowTos bzw. Informationen gewünscht und benötigt sind.
Offline
#5 11. Januar 2017 10:47
- pWorker
- probiert CMS/ms aus
- Registriert: 20. Oktober 2016
- Beiträge: 78
Re: Exif-Daten von Bildern auslesen und anzeigen
Ist auch so. Mittlerweile benutze ich viele Module nur noch als Skelette auf die ich dann deren Funktionen aufsetze - Mein globales Ziel ist es das CG Calender Modul vollumfänglich zum Laufen zu bringen...bin bei 80%.
Offline
#6 11. Januar 2017 22:09
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.017
- Webseite
Re: Exif-Daten von Bildern auslesen und anzeigen
benutze ich viele Module
Nur so nebenbei ... das "viele Module" auf die Performance drücken, weißt du sicherlich?!
Oder anders formuliert - besser eines richtig als viele nur halb .
Offline
#7 12. Januar 2017 11:07
- pWorker
- probiert CMS/ms aus
- Registriert: 20. Oktober 2016
- Beiträge: 78
Re: Exif-Daten von Bildern auslesen und anzeigen
Viele in Relation zur Gesamtheit der Module über die ich in der Form keine Aussage gemacht habe - Ist halt auch eine sehr komplizierte und umfangreiche Geschichte dieses Portal. Indem ich den Calender richtig nutze, fehlt mir trotzdem noch die User Directory. Selfreg und Feu auch unerlässlich, 1 Sicherheitsmodul, Captcha, Simpleblah, CgExtensions ... fällt schwer da eins raus zu nehmen und durch ein anderes zu ersetzen.
Offline
#8 12. Januar 2017 13:59
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.017
- Webseite
Re: Exif-Daten von Bildern auslesen und anzeigen
eine sehr komplizierte und umfangreiche Geschichte dieses Portal.
CMSMS != Portal
Offline
Seiten: 1