aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Froese <greg.froese@gmail.com>2009-05-20 14:22:06 +0000
committerGreg Froese <greg.froese@gmail.com>2009-05-20 14:22:06 +0000
commitb5180462ce397d1a6c0c38097f3b2ac4daf04761 (patch)
tree5bd67e6b2788e173e60bc82f9e4ec740e016d515
parent0d12092d4c5ca62247fe8495dbb78adfc134691e (diff)
downloadelgg-b5180462ce397d1a6c0c38097f3b2ac4daf04761.tar.gz
elgg-b5180462ce397d1a6c0c38097f3b2ac4daf04761.tar.bz2
get exif data directly from file if non was recorded during upload
-rw-r--r--lib/exif.php57
-rw-r--r--views/default/object/image.php10
2 files changed, 51 insertions, 16 deletions
diff --git a/lib/exif.php b/lib/exif.php
index 1b6c2cbd2..1bebb5fdc 100644
--- a/lib/exif.php
+++ b/lib/exif.php
@@ -1,14 +1,20 @@
<?php
include_once dirname(__FILE__) . "/tidypics.php";
-function td_get_exif(Elggfile $file) {
- $my_file = str_replace("image", "", tp_get_img_dir()) . $file->getFilename();
- $exif = exif_read_data($my_file);
+function td_get_exif($file_guid) {
+ $file = new ElggFile($file_guid);
+ $filename = $file->getFilenameOnFilestore();
+ $exif = exif_read_data($filename);
create_metadata($file->getGUID(), "tp_exif", serialize($exif), "string", $file->getObjectOwnerGUID(), 2);
}
function tp_exif_formatted($file_guid) {
$metadata_exif = get_metadata_byname($file_guid, "tp_exif");
+ if(!$metadata_exif) { //try to load it from the file if its not in the database
+ td_get_exif($file_guid);
+ $metadata_exif = get_metadata_byname($file_guid, "tp_exif");
+ }
+
if($metadata_exif) {
$exif = unserialize($metadata_exif["value"]);
@@ -16,18 +22,47 @@ function tp_exif_formatted($file_guid) {
//convert the raw values to understandible values
$Fnumber = explode("/", $exif['FNumber']);
$Fnumber = $Fnumber[0] / $Fnumber[1];
+ if(!$Fnumber) {
+ $Fnumber = "N/A";
+ } else {
+ $Fnumber = "f/$Fnumber";
+ }
+
$Focal = explode("/", $exif['FocalLength']);
$Focal = $Focal[0] / $Focal[1];
+ if(!$Focal || round($Focal) == "0") $Focal = 0;
+ if(round($Focal) == 0) {
+ $Focal = "N/A";
+ } else {
+ $Focal = round($Focal) . "mm";
+ }
+
+ $model = $exif['Model'];
+ if(!$model) $model = "N/A";
+
+ $exposure = $exif['ExposureTime'];
+ if(!$exposure) $exposure = "N/A";
+
+ $iso = $exif['ISOSpeedRatings'];
+ if(!$iso) $iso = "N/A";
+
+ $captured = $exif['DateTime'];
+ if(!$captured) $captured = "N/A";
//prepare the text for return
- $exif_text = "Model: ".$exif['Model']."<br>";
- $exif_text .= "Shutter: ".$exif['ExposureTime']."<br>";
- $exif_text .= "Aperture: f/".$Fnumber."<br>";
- $exif_text .= "ISO Speed: ".$exif['ISOSpeedRatings']."<br>";
- $exif_text .= "Focal Length: ".round($Focal)."mm<br>";
- $exif_text .= "Captured: ". $exif['DateTime'];
-
- return "<tr><td>$exif_text</td></tr>";
+
+ $exif_text = "Model: ".$model."<br>";
+ $exif_text .= "Shutter: ".$exposure."<br>";
+ $exif_text .= "Aperture: ".$Fnumber."<br>";
+ $exif_text .= "ISO Speed: ".$iso."<br>";
+ if(round($Focal) == 0) {
+ $exif_text .= "Focal Length: N/A<br>";
+ } else {
+ $exif_text .= "Focal Length: " . round($Focal) . "mm<br />";
+ }
+ $exif_text .= "Captured: ". $captured;
+
+ return $exif_text;
} else {
return false;
}
diff --git a/views/default/object/image.php b/views/default/object/image.php
index b65dc858e..d9204377f 100644
--- a/views/default/object/image.php
+++ b/views/default/object/image.php
@@ -187,11 +187,11 @@ if ($photo_tags) {
?>
<div id="tidypics_breadcrumbs">
- <?php
- $exif = tp_exif_formatted($file_guid);
- if($exif) echo $exif;
- ?>
- </div>
+ <?php
+ $exif = tp_exif_formatted($file_guid);
+ if($exif) echo $exif;
+ ?>
+ </div>
<div id="tidypics_info">
<?php if (!is_null($tags)) { ?>
<div class="object_tag_string"><?php echo elgg_view('output/tags',array('value' => $tags));?></div>