Hi all, I am currently using 4images version 1.7.9 and I am trying to get the exif information to be shown.
I have read a couple of the tutorials and plugins on how to do this. I can get most of the exif info shown, but the one I am having trouble with is the GPS Lat/Lon/Alt exif information.
I have modified the includes/functions.php, exif.php files and I can't get it to show the GPS exif info at all.
This is what I have added to the includes/functions file:
$exif_match['GPSLatitude'] = "GPSLatitude";
$exif_match['GPSLatitudeRef'] = "GPSLatitudeRef";
$exif_match['GPSLongitude'] = "GPSLongitude";
$exif_match['GPSLongitudeRef'] = "GPSLongitudeRef";
$exif_match['GPSAltitude'] = "GPSAltitude";
...
elseif ($key == "GPSLatitudeRef") {
if ($exif_info == "N") {
$GPSLatitudeRef = "North";
$GPSLatfaktor = 1;
} else {
$GPSLatitudeRef = "South";
$GPSLatfaktor = -1;
}
}
elseif ($key == "GPSLongitudeRef") {
if ($exif_info == "E") {
$GPSLongitudeRef = "East";
$GPSLongfaktor = 1;
} else {
$GPSLongitudeRef = "West";
$GPSLongfaktor = -1;
}
}
elseif ($key == "GPSLatitude") {
$GPSLatitude_h = explode("/", $exif_info[0]);
$GPSLatitude_m = explode("/", $exif_info[1]);
$GPSLatitude_s = explode("/", $exif_info[2]);
$GPSLat_h = $GPSLatitude_h[0] / $GPSLatitude_h[1];
$GPSLat_m = $GPSLatitude_m[0] / $GPSLatitude_m[1];
$GPSLat_s = $GPSLatitude_s[0] / $GPSLatitude_s[1];
$GPSLatGrad = $GPSLatfaktor * ($GPSLat_h + ($GPSLat_m + ($GPSLat_s / 60))/60);
$exif_array[$exif_match[$key]] = $GPSLatitudeRef . " " .$GPSLat_h . "° ". $GPSLat_m . "' " . $GPSLat_s . "'' ($GPSLatGrad)";
}
elseif ($key == "GPSLongitude") {
$GPSLongitude_h = explode("/", $exif_info[0]);
$GPSLongitude_m = explode("/", $exif_info[1]);
$GPSLongitude_s = explode("/", $exif_info[2]);
$GPSLong_h = $GPSLongitude_h[0] / $GPSLongitude_h[1];
$GPSLong_m = $GPSLongitude_m[0] / $GPSLongitude_m[1];
$GPSLong_s = $GPSLongitude_s[0] / $GPSLongitude_s[1];
$GPSLongGrad = $GPSLatfaktor * ($GPSLong_h + ($GPSLong_m + ($GPSLong_s / 60))/60);
$exif_array[$exif_match[$key]] = $GPSLongitudeRef . " " . $GPSLong_h . "° ". $GPSLong_m . "' " . $GPSLong_s . "'' ($GPSLongGrad)";
}
elseif ($key == "GPSAltitude") {
$GPSAltitude = explode("/", $exif_info);
$exif_array[$exif_match[$key]] = ($GPSAltitude[0] / $GPSAltitude[1]) . " Meter über NN";
}
I have also included a link to the exif.php file and this is the contents of that file:
<?php
/*
4images EXIF MOD
Version : 0.3
Date: 2003-01-17
By: fatman (fatman_li@yahoo.com.hk)
*/
// true: enable the field filter
// false: disable the field filter
define('EXIF_CONTROL', true);
// add the field name for show in exif section
// remember the field name with the colon ":"
define('EXIF_FILTER', "
Model:
Orientation:
ExposureTime:
FNumber:
ISOSpeedRatings:
ExposureBiasValue:
MeteringMode:
Flash:
FocalLength:
ColorSpace:
FileSource:
//Below is self added
GPSLatitutde:
//End
");
function exif_filter_control() {
return EXIF_CONTROL;
}
function exif_filter($name) {
if (strpos(EXIF_FILTER, ($name . ":")) > 0) {
return true;
} else {
return false;
}
}
function exif_get_str_val($val) {
$val = (substr($val, 0, strpos($val, "/"))) / (substr($val, strpos($val, "/") + 1));
return $val;
}
function exif_parse_value($name, $val) {
switch($name) {
case "Orientation":
if($val==1) $val = "Normal";
if($val==2) $val = "Mirrored";
if($val==3) $val = "Upsidedown";
if($val==4) $val = "Upsidedown Mirrored";
if($val==5) $val = "90deg CW Mirrored";
if($val==6) $val = "90deg CCW";
if($val==7) $val = "90deg CCW Mirrored";
if($val==8) $val = "90deg CW";
break;
case "ResolutionUnit":
if($val==1) $val = "No Unit";
if($val==2) $val = "Inch";
if($val==3) $val = "Centimeter";
break;
case "YCbCrPositioning":
if($val==1) $val = "Pixel Array";
if($val==2) $val = "Datum Point";
break;
case "ExposureTime":
$val = $val . " seconds";
break;
case "FNumber":
$val = "F/" . exif_get_str_val($val);
break;
case "ExposureProgram":
if($val==1) $val = "Manual control";
if($val==2) $val = "Program normal";
if($val==3) $val = "Aperture priority";
if($val==4) $val = "Shutter priority";
if($val==5) $val = "Program creative(slow program)";
if($val==6) $val = "Program action(high-speed program)";
if($val==7) $val = "Portrait mode";
if($val==8) $val = "Landscape mode";
break;
case "ExifVersion":
$val = round($val / 100, 2);
break;
case "ComponentsConfiguration":
$val = bin2hex($val);
$val = str_replace("01","Y",$val);
$val = str_replace("02","Cb",$val);
$val = str_replace("03","Cr",$val);
$val = str_replace("04","R",$val);
$val = str_replace("05","G",$val);
$val = str_replace("06","B",$val);
$val = str_replace("00","",$val);
break;
case "CompressedBitsPerPixel":
$val = exif_get_str_val($val);
break;
case "ShutterSpeedValue":
$val = "1/" . round(pow(2, exif_get_str_val($val))) . " seconds";
break;
case "ApertureValue":
$val = "F/" . round(pow(sqrt(2), exif_get_str_val($val)),1);
break;
case "BrightnessValue ":
$val = exif_get_str_val($val);
break;
case "ExposureBiasValue":
if ((substr($val, 0, strpos($val, "/"))) == "0") {
$val = "0 Step";
} else {
$val = $val . " Step";
}
break;
case "MaxApertureValue":
$val = "F/" . round(pow(sqrt(2), exif_get_str_val($val)),1);
break;
case "SubjectDistance":
$val = exif_get_str_val($val) . " M";
break;
case "MeteringMode":
if($val==0) $val = "Unknown";
if($val==1) $val = "Average";
if($val==2) $val = "Center Weighted Average";
if($val==3) $val = "Spot";
if($val==4) $val = "Multi-spot";
if($val==5) $val = "Multi-segment";
if($val==6) $val = "Partial";
if($val==255) $val = "Other";
break;
case "LightSource":
if($val==0) $val = "Unknown";
if($val==1) $val = "Daylight";
if($val==2) $val = "Fluorescent";
if($val==3) $val = "Tungsten";
if($val==10) $val = "Flash";
if($val==17) $val = "Standard light A";
if($val==18) $val = "Standard light B";
if($val==19) $val = "Standard light C";
if($val==20) $val = "D55";
if($val==21) $val = "D65";
if($val==22) $val = "D75";
if($val==255) $val = "Other";
break;
case "Flash":
if($val==0) $val = "No Flash";
if($val==1) $val = "Flash fired";
if($val==5) $val = "Flash fired but strobe return light not detected";
if($val==7) $val = "Flash fired and strobe return light detected";
if($val==9) $val = "Undefined";
break;
case "FocalLength":
$val = exif_get_str_val($val) . " mm";
break;
case "FlashPixVersion":
$val = round($val / 100, 2);
break;
case "ColorSpace":
if($val==1) $val = "sRGB";
if($val=='65535') $val = "Uncalibrated";
break;
case "FocalPlaneXResolution":
$val = round(exif_get_str_val($val));
break;
case "FocalPlaneYResolution":
$val = round(exif_get_str_val($val));
break;
case "FocalPlaneResolutionUnit":
if($val==1) $val = "No Unit";
if($val==2) $val = "Inch";
if($val==3) $val = "Centimeter";
break;
case "SensingMethod":
if($val==2) $val = "1 chip color area sensor";
break;
case "FileSource":
$val = bin2hex($val);
if($val==0x03) $val = "Digital still camera";
break;
case "FileSource":
$val = bin2hex($val);
if($val==0x01) $val = "Directly photographed";
break;
//Below is self added
case "GPSLatitude":
$val = exif_get_str_val($val);
break;
//End
}
return $val;
}
?>
Any help or pointers of where I may be going wrong is much appreciated.
The image properties include the GPS info
Cheers,
Chris