[erl] Smartors Photo Album: Anzeigen der EXIF Daten
Verfasst: 31.05.2009 11:45
Moin!
Basierend auf einen verschollenen Mini Mod vom Programmierer des Photo Albums Smartor und Pgh-Biker habe ich die Anzeige der Exif Daten von Bildern etwas angepasst.
Suche in der album_page.php:
davor füge ein:
suche in der templates/subSilver/album_page_body.tpl:
ersetze es durch:
Dann erstelle eine Datei exif_info.php:
Diese kopiere in das Root Verzeichniss des Forums.
Das war's. Nun werden bei der Anzeige der Bilder die vorhandenen Exif Daten angezeigt.
Bye

Basierend auf einen verschollenen Mini Mod vom Programmierer des Photo Albums Smartor und Pgh-Biker habe ich die Anzeige der Exif Daten von Bildern etwas angepasst.
Suche in der album_page.php:
Code: Alles auswählen
//
// Generate the page
//
Code: Alles auswählen
$xif = @exif_read_data(ALBUM_UPLOAD_PATH . $thispic['pic_filename'], 0, true);
if (!empty($xif[IFD0]) || !empty($xif[EXIF]))
{
include_once($phpbb_root_path . 'exif_info.'.$phpEx);
}
Code: Alles auswählen
</tr>
<!-- END comment_switch -->
</table>
</td>
Code: Alles auswählen
</tr>
<!-- END comment_switch -->
</table>
<br />
<!-- BEGIN exif_switch -->
<table width="99%" align="center" border="0" cellpadding="3" cellspacing="1" class="forumline">
<tr>
<td align="center" colspan="4"><span class="gen"><b>Image EXIF Informationen</b></span></td>
</tr>
<!-- BEGIN exif_data -->
<tr>
<td class="row1" width="20%" align="right"><span class="explaintitle">{exif_switch.exif_data.EXIFc1}</span></td>
<td class="row1" width="30%" ><b><span class="genmed">{exif_switch.exif_data.EXIFd1}</span></b></td>
<td class="row1" width="20%" align="right"><span class="explaintitle">{exif_switch.exif_data.EXIFc2}</span></td>
<td class="row1" width="30%" ><b><span class="genmed">{exif_switch.exif_data.EXIFd2}</span></b></td>
</tr>
<!-- END exif_data -->
</table>
<!-- END exif_switch -->
</td>
Code: Alles auswählen
<?php
/***************************************************************************
* exif_info.php
* ---------------
* begin : 03/18/2005 | 05/30/2009
* copyright : Pgh-Biker | Dungeonwatcher
* email :
*
* version : 1.0.1
***************************************************************************/
/***************************************************************************
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
***************************************************************************/
define('IN_PHPBB', true);
$phpbb_root_path = './';
global $board_config;
function make_exif($xkey, $xval)
{
global $board_config;
$exif_info = array(
'FILE_FileDateTime' => 'Original Datum/Uhrzeit ',
'FILE_FileSize' => array(
'Name' => 'Dateigröße',
'Units' => ' bytes'
),
'COMPUTED_Height' => array(
'Name' => 'Bild Höhe',
'Units' => ' Pixel'
),
'COMPUTED_Width' => array(
'Name' => 'Bild Breite',
'Units' => ' Pixel'
),
'COMPUTED_ApertureFNumber' => 'Blende',
'COMPUTED_UserComment' => 'User Kommentar',
'IFD0_ImageDescription' => 'Bildbeschreibung',
'IFD0_Make' => 'Kamera (Hersteller)',
'IFD0_Model' => 'Kamera Model',
'IFD0_XResolution' => array(
'Name' => 'Horizontale Auflösung',
'Units' => ' Pixel per'
),
'IFD0_YResolution' => array(
'Name' => 'Vertikale Auflösung',
'Units' => ' Pixel per'
),
'IFD0_ResolutionUnit' => array(
'Name' => 'Maßeinheit der Auflösung',
'2' => ' Inch',
'3' => ' Zentimeter'
),
'IFD0_Software' => 'Firmware / Erstellungssoftware',
'IFD0_Artist' => 'Autor',
'IFD0_Copyright' => 'Copyright',
'EXIF_ExposureTime' => array(
'Name' => 'Belichtungszeit',
'Units' => ' Sekunde(n)'
),
'EXIF_ExposureProgram' => array(
'Name' => 'Belichtungsprogramm',
'0' => 'Nicht angegeben',
'1' => 'Manuell',
'2' => 'Normal',
'3' => 'optimiert nach Blende',
'4' => 'optimiert nach Belichtungszeit',
'5' => 'Kreatives Programm (bevorzugt Schärfentiefe)',
'6' => 'Kreatives Programm (bevorzugt kurze Belichtungszeit)',
'7' => 'Portrait Modus (für Nahaufnahmen mit unscharfem Hintergrund)',
'8' => 'Landschafts Modus (für Landschaftsaufnahmen mit scharfem Hintergrund)'
),
'EXIF_ISOSpeedRatings' => 'ISO Wert',
'EXIF_DateTimeOriginal' => 'Digitalisierung Datum/Uhrzeit ',
// 'EXIF_DateTimeDigitized' => 'Date and Time when Digitized',
'EXIF_ExposureBiasValue' => array(
'Name' => 'Wert der Belichtungsabweichung ',
'Units' => 'EV'
),
'EXIF_MaxApertureValue' => 'APEX Maximale Blendöffnung',
'EXIF_MeteringMode' => array(
'Name' => 'Belichtungsmessverfahren',
'0' => 'Unbekannt',
'1' => 'Durchschnitt',
'2' => 'Mittenbetonter Durchschnitt',
'3' => 'Punkt',
'4' => 'Mehr-Punkt',
'5' => 'Raster',
'6' => 'Partiell',
'255' => 'Anderes'
),
'EXIF_LightSource' => array(
'Name' => 'Licht Quelle',
'0' => 'Unbekannt',
'1' => 'Tageslicht',
'2' => 'Leuchstoffröhre',
'3' => 'Wolframlicht',
'4' => 'Blitz',
'9' => 'Schönes Wetter',
'10' => 'Wolkiges Wetter',
'11' => 'Schatten',
'12' => 'Tageslicht Leuchtstoffröhre (D 5700 – 7100K)',
'13' => 'Tageslichtweiß Leuchtstoffröhre (N 4600 – 5400K)',
'14' => 'Kühle weiße Leuchtstoffröre (W 3900 – 4500K)',
'15' => 'Weißes Leuchtstofflicht (WW 3200 – 3700K)',
'17' => 'Standard Licht A',
'18' => 'Standard Licht B',
'19' => 'Standard Licht C',
'20' => 'D55',
'21' => 'D65',
'22' => 'D75',
'23' => 'D50',
'24' => 'ISO Studio Wolfram',
'255' => 'Anderes'
),
'EXIF_Flash' => array(
'Name' => 'Blitz Modus',
'0' => 'Blitz wurde nicht ausgelöst',
'1' => 'Blitz wurde ausgelöst',
'5' => 'Kein Messblitz-Licht zurückgeworfen',
'7' => 'Messblitz-Licht zurückgeworfen',
'8' => 'Ein, Blitz wurde nicht ausgelöst',
'9' => 'Blitz wurde ausgelöst, Blitz erzwingen-Modus',
'13' => 'Blitz wurde ausgelöst, Blitz erzwingen-Modus, kein Messblitz-Licht zurückgeworfen',
'15' => 'Blitz wurde ausgelöst, Blitz erzwingen-Modus, Messblitz-Licht zurückgeworfen',
'16' => 'Blitz wurde nicht ausgelöst, Blitz unterdrücken-Modus',
'20' => 'Deaktiviert, Blitz wurde nicht ausgelöst, kein Messblitz-Licht zurückgeworfen',
'24' => 'Blitz wurde nicht ausgelöst, Automodus',
'25' => 'Blitz wurde ausgelöst, Automodus',
'29' => 'Blitz wurde ausgelöst, Automodus, kein Messblitz-Licht zurückgeworfen',
'31' => 'Blitz wurde ausgelöst, Automodus, Messblitz-Licht zurückgeworfen',
'32' => 'Keine Blitzfunktion',
'48' => 'Deaktiviert, Keine Blitzfunktion',
'65' => 'Blitz wurde ausgelöst, Rote-Augen-Reduzierung',
'69' => 'Blitz wurde ausgelöst, Rote-Augen-Reduzierung, kein Messblitz-Licht zurückgeworfen',
'71' => 'Blitz wurde ausgelöst, Rote-Augen-Reduzierung, Messblitz-Licht zurückgeworfen',
'73' => 'Blitz wurde ausgelöst, Blitz erzwingen-Modus, Rote-Augen-Reduzierung',
'77' => 'Blitz wurde ausgelöst, Blitz erzwingen-Modus, Rote-Augen-Reduzierung, kein Messblitz-Licht zurückgeworfen',
'79' => 'Blitz wurde ausgelöst, Blitz erzwingen-Modus, Rote-Augen-Reduzierung, Messblitz-Licht zurückgeworfen',
'80' => 'Deaktiviert, Rote-Augen-Reduzierung',
'88' => 'Blitz wurde nicht ausgelöst, Rote-Augen-Reduzierung',
'89' => 'Blitz wurde ausgelöst, Automodus, Rote-Augen-Reduzierung',
'93' => 'Blitz wurde ausgelöst, Automodus, kein Messblitz-Licht zurückgeworfen, Rote-Augen-Reduzierung',
'95' => 'Blitz wurde ausgelöst, Automodus, Messblitz-Licht zurückgeworfen, Rote-Augen-Reduzierung'
),
'EXIF_FocalLength' => array(
'Name' => 'Fokuslänge',
'Units' => ' mm'
),
'EXIF_ShutterSpeedValue' => array(
'Name' => 'Belichtungszeitwert',
'Units' => ' sek.'
),
'EXIF_SensingMethod' => array(
'Name' => 'Bildsensor',
'1' => 'Unbekannt',
'2' => 'Einzel Chip Farbsensor',
'3' => 'Zwei Chip Farbsensor',
'4' => 'Drei Chip Farbsensor',
'5' => 'Farbraum sequentieller Sensor',
'7' => 'Trilinearer Sensor',
'8' => 'Farbraum linear sequentieller Sensor'
),
'EXIF_CustomRendered' => array(
'Name' => 'Individuelle Wiedergabe',
'0' => 'Normal',
'1' => 'Anwender',
),
'EXIF_ExposureMode' => array(
'Name' => 'Belichtungssteuerung',
'0' => 'Auto Modus',
'1' => 'Manuell',
'2' => 'Automatische Erfassung'
),
'EXIF_WhiteBalance' => array(
'Name' => 'Weißabgleich',
'0' => 'Auto Modus',
'1' => 'Manuell'
),
'EXIF_Compression' => array(
'Name' => 'Kompressionsart',
'1' => 'Tiff',
'3' => 'nicht komprimiert',
'6' => 'Jpeg',
),
'EXIF_DigitalZoomRatio' => array(
'Name' => 'Digitalzoomverhältnis',
'Units' => ' ( Zero = Digital Zoom Not Used )'
),
'EXIF_FocalLengthIn35mmFilm' => array(
'Name' => 'Equivalent Focal Length In 35mm Film',
'Units' => ' mm'
),
'EXIF_SceneCaptureType' => array(
'Name' => 'Motivprogramm',
'0' => "Standard",
'1' => "Landschaft",
'2' => "Portrait",
'3' => "Nacht"
),
'EXIF_GainControl' => array(
'Name' => 'Gain Control',
'0' => 'None',
'1' => 'Low gain up',
'2' => 'High gain up',
'3' => 'Low gain down',
'4' => 'High gain down'
),
'EXIF_Contrast' => array(
'Name' => 'Kontrast',
'0' => 'Normal',
'1' => 'Weich',
'2' => 'Hart'
),
'EXIF_Saturation' => array(
'Name' => 'Sättigung',
'0' => 'Normal',
'1' => 'gering',
'2' => 'Hoch'
),
'EXIF_Sharpness' => array(
'Name' => 'Schärfe',
'0' => 'Normal',
'1' => 'Soft',
'2' => 'Hard'
),
'EXIF_SubjectDistanceRange' => array(
'Name' => 'Objektiv Entferungsbereich',
'0' => 'Unbekannt',
'1' => 'Makro',
'2' => 'Nahaufnahme',
'3' => 'Große Entfernung'
),
'EXIF_ColorSpace' => array(
'Name' => 'Farbraum',
'0' => 'sBW',
'1' => 'sRGB',
'65535' => 'unbekannt'
),
);
$i = 0;
$rexif = array();
while (!empty($xkey[$i]) )
{
if ( ereg("([0-9]{1,})/([0-9]{1,})", $xval[$i], $num) )
{
if ( $num[1] > 1 ) $xval[$i] = round( ($num[1] / $num[2]), 6);
}
if ( is_array($exif_info[$xkey[$i]]) && $xkey[$i] != 'IFD0_ResolutionUnit' )
{
if ( isset($exif_info[$xkey[$i]]['Units']) )
{
if ( $xkey[$i+2] == 'IFD0_ResolutionUnit' )
{
$rexif[$exif_info[$xkey[$i]]['Name']] = ($xval[$i] . $exif_info[$xkey[$i]]['Units'] . $exif_info[$xkey[$i+2]][$xval[$i+2]]);
}
else if ( $xkey[$i+1] == 'IFD0_ResolutionUnit' )
{
$rexif[$exif_info[$xkey[$i]]['Name']] = ($xval[$i] . $exif_info[$xkey[$i]]['Units'] . $exif_info[$xkey[$i+1]][$xval[$i+1]]);
}
else
{
$rexif[$exif_info[$xkey[$i]]['Name']] = ($xval[$i] . $exif_info[$xkey[$i]]['Units']);
}
}
else
{
$rexif[$exif_info[$xkey[$i]]['Name']] = $exif_info[$xkey[$i]][$xval[$i]];
}
}
else if ( isset($exif_info[$xkey[$i]]) && $xkey[$i] != 'IFD0_ResolutionUnit' )
{
$rexif[$exif_info[$xkey[$i]]] = $xval[$i];
if ( $xkey[$i] == 'FILE_FileDateTime' )
{
$rexif[$exif_info[$xkey[$i]]] = create_date('Y:m:d H:i:s', $xval[$i], $board_config['board_timezone']);
}
}
$i++;
}
return $rexif;
}
$template->assign_block_vars('exif_switch', array());
$i = 0;
$xkey = array();
$xval = array();
while (list($xk1,$xv1) = each($xif))
{
$xkey[$i] = $xk1;
$xval[$i] = $xv1;
if (is_array($xif[$xk1]))
{
while (list($xk2,$xv2) = each($xif[$xk1]))
{
$xkey[$i] = $xk1.'_'.$xk2;
$xval[$i] = $xv2;
$i++;
}
}
else
{
$i++;
}
}
$exif = make_exif($xkey, $xval);
$i = 0;
$key = array();
$val = array();
while (list($k1,$v1) = each($exif))
{
$key[$i] = $k1;
$val[$i] = $v1;
$i++;
}
$x = intval(($i/2)+.5);
for ($n = 0; $n < $x; $n++)
{
$template->assign_block_vars('exif_switch.exif_data', array(
'EXIFc1' => (!empty($key[$n])) ? $key[$n].':' : '',
'EXIFd1' => ''.$val[$n],
'EXIFc2' => (!empty($key[$n+$x])) ? $key[$n+$x].':' : '',
'EXIFd2' => ''.$val[$n+$x]
));
}
?>
Das war's. Nun werden bei der Anzeige der Bilder die vorhandenen Exif Daten angezeigt.
Bye