Sehe Metadata info's
-
-
Weiterhin den bilder exif und anderer Bilder metadaten sollen auch in popup images also nach änderung noch da sein wen möglich.
Momentan bleiben die nur beim original Bilder datei erhalten -
Nochmal Status?
including better validation of EXIF data we are extracting from uploaded photos. ( wordpress macht es bereits etwas besser )
http://plussupport.commerce-seo.de/showthread.php…&highlight=exif -
Du hast das bei php.net aber auch gelesen? Da müssen wir wohl einiges testen, da die Serverlandschaft sehr vielfältig ist!
-
Ich denke man müsste eine eigene Datei schreiben, wegen der Server, z.B. erst:
Zitatpublic function __construct($parameter=NULL)
{
/* test ob EXIF-Komponente auf dem Server geladen ist */
if (function_exists("exif_read_data")== false) return false;
if ( $parameter==NULL or (!file_exists($parameter))) return false;
$fileinfo= getimagesize($parameter);
if (!in_array( strtolower($fileinfo['mime']),array("image/jpg","image/jpeg"))) return false;
if (exif_read_data($parameter,0,true)==false) return false; /* wenn nicht, dann raus hier */
$this->checkexif=true;
$this->config['linkimage']="images/view.gif";
$this->config['image']=$parameter;
}und dann:
Zitatpublic function __set($key, $value)
{
if (!empty($value)) {
$this->config[$key] = $value;
} else {
unset($this->config[$key]);
}
return true;
}public static function set($key, $value)
{
if (!empty($value)) {
$this->config[$key] = $value;
} else {
unset($this->config[$key]);
}
return true;
}public function __get($key)
{
return isset($this->config[$key]) ? $this->config[$key] : false;
}
public static function get($key)
{
return isset($this->config[$key]) ? $this->config[$key] : false;
}
public function getKey($keyname)
{
if (array_key_exists($keyname,$this->exifkeys)) {
return $this->exifkeys[$keyname];
}
return false;
}
public function _exifReader($parameter=NULL)
{
if (!$this->checkexif) return false;
if ($parameter==NULL) $parameter=$this->config['image'];
if (!file_exists($parameter)) return;
$this->exifarray=exif_read_data($parameter,0,true);
foreach ($this->exifarray as $key => $section) {
foreach ($section as $name => $value2) {
if (!is_array($value2) and strpos($value2,"/")>0) {
list($numerator, $denumerator) = explode("/", $value2);
if ($denumerator>0) $value2 = round(($numerator/$denumerator),2);
}
switch($name) {
case "ShutterSpeedValue":
$this->exifkeys[$name] = "1/".$value2*100;
break;
case "WhiteBalance":
switch($value2) {
case "1":
$this->exifkeys['ExposureMode'] = "Manual";
break;
default:
$this->exifkeys['ExposureMode'] = "auto";
break;
}
//case "DateTimeOriginal":
case "DateTime":
$date = $value2;
// Datum zu Unix-Timestamp
if ($date != '' && $date != "0000:00:00 00:00:00") {
$date = preg_replace("/(\d{4}):(\d{2}):(\d{2}) (\d{2}):(\d{2}):(\d{2})/",'\1-\2-\3 \4:\5:\6', $date);
$this->exifkeys['DateTime'] = mx_strftime(_XDATESTRING,strtotime($date));
} /*else {
$this->exifkeys['DateTime'] = mx_strftime('%x', 0);
}*/
break;
case "ExposureMode":
switch($value2) {
case "0":
$this->exifkeys['ExposureMode'] = "auto";
break;
case "1":
$this->exifkeys['ExposureMode'] = "Manual";
break;
case "2":
$this->exifkeys['ExposureMode'] = "auto bracket";
break;
default:
$this->exifkeys['ExposureMode'] = "auto";
break;
}
default:
$this->exifkeys[$name]=$value2;
break;
}
}
}
/* ab hier keine standardisierten EXIF-Daten mehr */
if (array_key_exists('GPSLatitudeRef',$this->exifkeys)) {
foreach($this->exifkeys["GPSLatitude"] as $key=>$value3) {
list($numerator, $denumerator) = explode("/", $value3);
if ($denumerator>0) $this->exifkeys["GPSLatitude"][$key] = round(($numerator/$denumerator),3);
}
foreach($this->exifkeys["GPSLongitude"] as $key=>$value3) {
list($numerator, $denumerator) = explode("/", $value3);
if ($denumerator>0) $this->exifkeys["GPSLongitude"][$key] = round(($numerator/$denumerator),3);
}
$deg=$this->exifkeys["GPSLatitude"][0];
$min=$this->exifkeys["GPSLatitude"][1];
$sec=$this->exifkeys["GPSLatitude"][2];
//Hemisphere (N, S, W oder O):
$hem=$this->exifkeys["GPSLatitudeRef"];
if ($hem!="N" or $hem!="S")$hem="N";
$latitude=$hem." ".$deg."°".$min.".".$sec;
$latDec=($hem=="N")?$deg."+".$min:"-".$deg."+".$min;
$deg=$this->exifkeys["GPSLongitude"][0];
$min=$this->exifkeys["GPSLongitude"][1];
$sec=$this->exifkeys["GPSLongitude"][2];
//Hemisphere (N, S, W oder O):
$hem=$this->exifkeys["GPSLongitudeRef"];
if ($hem!="W" or $hem!="E")$hem="E";
$longitude=$hem." ".$deg."°".$min.".".$sec;
$lonDec=($hem!="W")?$deg."+".$min:"-".$deg."+".$min;
//Altitude:
$alt=$this->exifkeys["GPSAltitude"];
$this->exifkeys["Position"]=$latitude." / ".$longitude. " - ".$alt." [m]";
}
if (array_key_exists('Position',$this->exifkeys)) {
$this->exifkeys["MapLink"]="<a href=\"http://maps.google.de/?q=$latDec,$lonDec\" target=\"_blank\" ><img src=\"".$this->config['linkimage']."\" alt=\"\" /></a>";
}
return;
}
}Mit dem Link zu Google-Maps ist vielleicht Quatsch. Hatte beim testen allerdings noch nicht viel Erfolg.
Vielleicht will sich ein anderer damit austoben?
Es wäre in SEO-technischer Hinsicht nicht verkehrt. Gerade wenn man einzigartige Produkte verkauft, gehen viele potentielle Kunden über die Google-Bildersuche. Die Wahrscheinlichkeit ist sehr hoch, das Google die Exif-Informationen ausliest. Ansonsten bleibt nur die Möglichkeit mit einer Stappelbearbeitung für Bilder die Exif-Informationen zu bearbeiten (z.B. Adobe Bridge) und per FTP wieder hochzuladen.