Changeset 17554 for extensions/AMetaData/JpegMetaData/Readers
- Timestamp:
- Aug 12, 2012, 11:22:20 PM (12 years ago)
- Location:
- extensions/AMetaData/JpegMetaData/Readers
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
extensions/AMetaData/JpegMetaData/Readers/CanonReader.class.php
r7569 r17554 141 141 * null terminated strings 142 142 */ 143 //print_r($values); 143 144 $returned=ConvertData::toStrings($values); 144 145 break; … … 151 152 case 0x0010: // "CanonModelID" 152 153 $tag=$this->tagDef->getTagById(0x0010); 153 $returned=$tag['tagValues.special'][sprintf("0x%08x", $values)]; 154 if(isset($tag['tagValues.special'][sprintf("0x%08x", $values)])) 155 { 156 $returned=$tag['tagValues.special'][sprintf("0x%08x", $values)]; 157 } 158 else 159 { 160 $returned=sprintf("unknown (0x%08x)", $values); 161 } 162 154 163 unset($tag); 155 164 break; 156 165 case 0x0015: // "SerialNumberFormat" 157 166 $tag=$this->tagDef->getTagById(0x0015); 158 $returned=$tag['tagValues.special'][sprintf("0x%08x", $values)]; 167 if(isset($tag['tagValues.special'][sprintf("0x%08x", $values)])) 168 { 169 $returned=$tag['tagValues.special'][sprintf("0x%08x", $values)]; 170 } 171 else 172 { 173 $returned=sprintf("unknown (0x%08x)", $values); 174 } 175 159 176 unset($tag); 160 177 break; -
extensions/AMetaData/JpegMetaData/Readers/GpsReader.class.php
r6729 r17554 78 78 { 79 79 case 0x0000: // Version 80 $returned=sprintf("%d.%d.%d.%d", $values[0], $values[1], $values[2], $values[3]); 80 if(isset($values[0]) and isset($values[1]) and isset($values[2]) and isset($values[3])) 81 { 82 $returned=sprintf("%d.%d.%d.%d", $values[0], $values[1], $values[2], $values[3]); 83 } 84 else 85 { 86 $returned='unknown'; 87 } 88 81 89 break; 82 90 case 0x0001: // GPSLatitudeRef … … 102 110 * converted in degrees, minutes and seconds 103 111 */ 104 $returned=ConvertData::toDMS($values[0], $values[1], $values[2]); 112 if(isset($values[0]) and isset($values[1]) and isset($values[2])) 113 { 114 $returned=ConvertData::toDMS($values[0], $values[1], $values[2]); 115 } 116 else 117 { 118 $returned=""; 119 } 105 120 break; 106 121 case 0x0006: // GPSAltitude … … 110 125 case 0x0018: // GPSDestBearing 111 126 case 0x001A: // GPSDestDistance 112 if($values[1]==0) $values[1]=1; 113 $returned=round($values[0]/$values[1],2); 127 if(isset($values[0]) and isset($values[1])) 128 { 129 if($values[1]==0) $values[1]=1; 130 $returned=round($values[0]/$values[1],2); 131 } 132 else 133 { 134 $returned=0; 135 } 114 136 break; 115 137 case 0x0008: // GPSSatellites -
extensions/AMetaData/JpegMetaData/Readers/NikonReader.class.php
r6729 r17554 491 491 * Nikon encrypt some data 492 492 * This function is used to decrypt them. Don't ask anything about "how does 493 * it work" a bd "what's it doing", I just translated the C++ & Perl code493 * it work" and "what's it doing", I just translated the C++ & Perl code 494 494 * from Exiv2, Exiftool & Raw Photo Parser (Copyright 2004-2006 Dave Coffin) 495 495 * -
extensions/AMetaData/JpegMetaData/Readers/XmpReader.class.php
r7441 r17554 247 247 break; 248 248 } 249 250 $types=array('simple', 'seq', 'bag', 'alt'); 251 $tagProperties=$this->tagDef->getTagById($node->getName()); 252 249 253 if($type=="seq" or $type=="bag" or $type=="alt") 250 254 { 255 if($type!=$types[$tagProperties['type']]) 256 $type=$types[$tagProperties['type']]; // if container type is not accorded with XMP schema, force it to right value 257 251 258 $value=Array('type' => $type, 'values' => Array()); 252 259 $childNode=$child->getFirstChild(); … … 270 277 else 271 278 { 279 $childNode->delAttributes(); // remove all attributes => only 'alt' type can have attributes 272 280 $value['values'][]=$childNode->getValue(); 273 281 } … … 454 462 case "Iptc4xmpCore:IntellectualGenre": 455 463 $returned=explode(":", $value); 464 if(!is_array($returned)) $returned=array($returned); // force the value to be an array 456 465 break; 457 466 case "exif:GPSLatitude": … … 460 469 case "exif:GPSDestLongitude": 461 470 $returned=Array('coord' => "", 'card'=>""); 471 462 472 preg_match_all('/(\d{1,3}),(\d{1,2})(?:\.(\d*)){0,1}(N|S|E|W)/', $value, $result); 463 $returned['coord']=$result[1][0]."° ".$result[2][0]."' "; 464 if(trim($result[3][0])!="") 465 { 466 $returned['coord'].= round(("0.".$result[3][0])*60,2)."\""; 467 } 468 switch($result[4][0]) 469 { 470 case "N": 471 $returned['card']="North"; 472 break; 473 case "S": 474 $returned['card']="South"; 475 break; 476 case "E": 477 $returned['card']="East"; 478 break; 479 case "W": 480 $returned['card']="West"; 481 break; 482 } 473 if(is_array($result) and 474 isset($result[1]) and 475 isset($result[2]) and 476 isset($result[3]) and 477 isset($result[4]) and 478 isset($result[1][0]) and 479 isset($result[2][0]) and 480 isset($result[3][0]) and 481 isset($result[4][0])) 482 { 483 $returned['coord']=$result[1][0]."° ".$result[2][0]."' "; 484 if(trim($result[3][0])!="") 485 { 486 $returned['coord'].= round(("0.".$result[3][0])*60,2)."\""; 487 } 488 switch($result[4][0]) 489 { 490 case "N": 491 $returned['card']="North"; 492 break; 493 case "S": 494 $returned['card']="South"; 495 break; 496 case "E": 497 $returned['card']="East"; 498 break; 499 case "W": 500 $returned['card']="West"; 501 break; 502 } 503 } 504 483 505 $type=ByteType::UNDEFINED; 484 506 break; … … 617 639 case "exif:GPSAltitudeRef": 618 640 case "exif:GPSDifferential": 619 $returned=(int)$xmpValue; 641 if(is_int($xmpValue)) 642 { 643 $returned=(int)$xmpValue; 644 } 645 else 646 { 647 $returned=0; 648 } 620 649 $type=ByteType::ULONG; 621 650 break; … … 666 695 case "exif:GPSDestDistance": 667 696 $computed=explode("/", $xmpValue); 668 $returned=Array((int)$computed[0], (int)$computed[1]); 697 if(is_array($computed) and is_int($computed[0]) and is_int($computed[1])) 698 { 699 $returned=Array((int)$computed[0], (int)$computed[1]); 700 } 701 else 702 { 703 $returned=array(0,1); 704 } 669 705 $type=ByteType::URATIONAL; 670 706 unset($computed);
Note: See TracChangeset
for help on using the changeset viewer.