Author: Jan Schneider (jan@horde.org)
Inheritance: extends Horde_Translation
コード例 #1
0
ファイル: Panasonic.php プロジェクト: horde/horde
 /**
  * Formats Data for the data type
  */
 protected function _formatData($type, $tag, $intel, $data)
 {
     switch ($type) {
         case 'UBYTE':
         case 'SBYTE':
             $data = bin2hex($data);
             if ($intel) {
                 $data = Horde_Image_Exif::intel2Moto($data);
             }
             $data = hexdec($data);
             if ($tag == '000f') {
                 //AFMode
                 switch ($data) {
                     case 256:
                         $data = Horde_Image_Translation::t("9-area-focusing");
                         break;
                     case 16:
                         $data = Horde_Image_Translation::t("1-area-focusing");
                         break;
                     case 4096:
                         $data = Horde_Image_Translation::t("3-area-focusing (High speed)");
                         break;
                     case 4112:
                         $data = Horde_Image_Translation::t("1-area-focusing (High speed)");
                         break;
                     case 1:
                         $data = Horde_Image_Translation::t("Spot-focusing");
                         break;
                     default:
                         $data = sprintf(Horde_Image_Translation::t("Unknown (%s)"), $data);
                         break;
                 }
             }
             break;
         case 'URATIONAL':
         case 'SRATIONAL':
             $data = bin2hex($data);
             if ($intel) {
                 $data = Horde_Image_Exif::intel2Moto($data);
             }
             $top = hexdec(substr($data, 8, 8));
             $bottom = hexdec(substr($data, 0, 8));
             if ($bottom != 0) {
                 $data = $top / $bottom;
             } elseif ($top == 0) {
                 $data = 0;
             } else {
                 $data = $top . '/' . $bottom;
             }
             break;
         case 'USHORT':
         case 'SSHORT':
         case 'ULONG':
         case 'SLONG':
         case 'FLOAT':
         case 'DOUBLE':
             $data = bin2hex($data);
             if ($intel) {
                 $data = Horde_Image_Exif::intel2Moto($data);
             }
             $data = hexdec($data);
             switch ($tag) {
                 case '0001':
                     //Image Quality
                     switch ($data) {
                         case 2:
                             $data = Horde_Image_Translation::t("High");
                             break;
                         case 3:
                             $data = Horde_Image_Translation::t("Standard");
                             break;
                         case 6:
                             $data = Horde_Image_Translation::t("Very High");
                             break;
                         case 7:
                             $data = Horde_Image_Translation::t("RAW");
                             break;
                         default:
                             $data = sprintf(Horde_Image_Translation::t("Unknown (%s)"), $data);
                             break;
                     }
                     break;
                 case '0003':
                     //White Balance
                     switch ($data) {
                         case 1:
                             $data = Horde_Image_Translation::t("Auto");
                             break;
                         case 2:
                             $data = Horde_Image_Translation::t("Daylight");
                             break;
                         case 3:
                             $data = Horde_Image_Translation::t("Cloudy");
                             break;
                         case 4:
                             $data = Horde_Image_Translation::t("Halogen");
                             break;
                         case 5:
                             $data = Horde_Image_Translation::t("Manual");
                             break;
                         case 8:
                             $data = Horde_Image_Translation::t("Flash");
                             break;
                         case 10:
                             $data = Horde_Image_Translation::t("Black and White");
                             break;
                         case 11:
                             $data = Horde_Image_Translation::t("Manual");
                             break;
                         default:
                             $data = sprintf(Horde_Image_Translation::t("Unknown(%s)"), $data);
                             break;
                     }
                     break;
                 case '0007':
                     //Focus Mode
                     switch ($data) {
                         case 1:
                             $data = Horde_Image_Translation::t("Auto");
                             break;
                         case 2:
                             $data = Horde_Image_Translation::t("Manual");
                             break;
                         case 4:
                             $data = Horde_Image_Translation::t("Auto, Focus button");
                             break;
                         case 5:
                             $data = Horde_Image_Translation::t("Auto, Continuous");
                             break;
                         default:
                             $data = sprintf(Horde_Image_Translation::t("Unknown(%s)"), $data);
                             break;
                     }
                     break;
                 case '001a':
                     //Image Stabilizer
                     switch ($data) {
                         case 2:
                             $data = Horde_Image_Translation::t("Mode 1");
                             break;
                         case 3:
                             $data = Horde_Image_Translation::t("Off");
                             break;
                         case 4:
                             $data = Horde_Image_Translation::t("Mode 2");
                             break;
                         default:
                             $data = sprintf(Horde_Image_Translation::t("Unknown(%s)"), $data);
                             break;
                     }
                     break;
                 case '001c':
                     //Macro mode
                     switch ($data) {
                         case 1:
                             $data = Horde_Image_Translation::t("On");
                             break;
                         case 2:
                             $data = Horde_Image_Translation::t("Off");
                             break;
                         default:
                             $data = sprintf(Horde_Image_Translation::t("Unknown(%s)"), $data);
                             break;
                     }
                     break;
                 case '001f':
                     //Shooting Mode
                     switch ($data) {
                         case 1:
                             $data = Horde_Image_Translation::t("Normal");
                             break;
                         case 2:
                             $data = Horde_Image_Translation::t("Portrait");
                             break;
                         case 3:
                             $data = Horde_Image_Translation::t("Scenery");
                             break;
                         case 4:
                             $data = Horde_Image_Translation::t("Sports");
                             break;
                         case 5:
                             $data = Horde_Image_Translation::t("Night Portrait");
                             break;
                         case 6:
                             $data = Horde_Image_Translation::t("Program");
                             break;
                         case 7:
                             $data = Horde_Image_Translation::t("Aperture Priority");
                             break;
                         case 8:
                             $data = Horde_Image_Translation::t("Shutter Priority");
                             break;
                         case 9:
                             $data = Horde_Image_Translation::t("Macro");
                             break;
                         case 11:
                             $data = Horde_Image_Translation::t("Manual");
                             break;
                         case 13:
                             $data = Horde_Image_Translation::t("Panning");
                             break;
                         case 14:
                             $data = Horde_Image_Translation::t("Simple");
                             break;
                         case 18:
                             $data = Horde_Image_Translation::t("Fireworks");
                             break;
                         case 19:
                             $data = Horde_Image_Translation::t("Party");
                             break;
                         case 20:
                             $data = Horde_Image_Translation::t("Snow");
                             break;
                         case 21:
                             $data = Horde_Image_Translation::t("Night Scenery");
                             break;
                         case 22:
                             $data = Horde_Image_Translation::t("Food");
                             break;
                         case 23:
                             $data = Horde_Image_Translation::t("Baby");
                             break;
                         case 27:
                             $data = Horde_Image_Translation::t("High Sensitivity");
                             break;
                         case 29:
                             $data = Horde_Image_Translation::t("Underwater");
                             break;
                         case 33:
                             $data = Horde_Image_Translation::t("Pet");
                             break;
                         default:
                             $data = sprintf(Horde_Image_Translation::t("Unknown(%s)"), $data);
                             break;
                     }
                     break;
                 case '0020':
                     //Audio
                     switch ($data) {
                         case 1:
                             $data = Horde_Image_Translation::t("Yes");
                             break;
                         case 2:
                             $data = Horde_Image_Translation::t("No");
                             break;
                         default:
                             $data = sprintf(Horde_Image_Translation::t("Unknown (%s)"), $data);
                             break;
                     }
                     break;
                 case '0023':
                     //White Balance Bias
                     $data = $data . ' EV';
                     break;
                 case '0024':
                     //Flash Bias
                     $data = $data;
                     break;
                 case '0028':
                     //Colour Effect
                     switch ($data) {
                         case 1:
                             $data = Horde_Image_Translation::t("Off");
                             break;
                         case 2:
                             $data = Horde_Image_Translation::t("Warm");
                             break;
                         case 3:
                             $data = Horde_Image_Translation::t("Cool");
                             break;
                         case 4:
                             $data = Horde_Image_Translation::t("Black and White");
                             break;
                         case 5:
                             $data = Horde_Image_Translation::t("Sepia");
                             break;
                         default:
                             $data = sprintf(Horde_Image_Translation::t("Unknown (%s)"), $data);
                             break;
                     }
                     break;
                 case '002a':
                     //Burst Mode
                     switch ($data) {
                         case 0:
                             $data = Horde_Image_Translation::t("Off");
                             break;
                         case 1:
                             $data = Horde_Image_Translation::t("Low/High Quality");
                             break;
                         case 2:
                             $data = Horde_Image_Translation::t("Infinite");
                             break;
                         default:
                             $data = sprintf(Horde_Image_Translation::t("Unknown (%s)"), $data);
                             break;
                     }
                     break;
                 case '002c':
                     //Contrast
                     switch ($data) {
                         case 0:
                             $data = Horde_Image_Translation::t("Standard");
                             break;
                         case 1:
                             $data = Horde_Image_Translation::t("Low");
                             break;
                         case 2:
                             $data = Horde_Image_Translation::t("High");
                             break;
                         default:
                             $data = sprintf(Horde_Image_Translation::t("Unknown (%s)"), $data);
                             break;
                     }
                     break;
                 case '002d':
                     //Noise Reduction
                     switch ($data) {
                         case 0:
                             $data = Horde_Image_Translation::t("Standard");
                             break;
                         case 1:
                             $data = Horde_Image_Translation::t("Low");
                             break;
                         case 2:
                             $data = Horde_Image_Translation::t("High");
                             break;
                         default:
                             $data = sprintf(Horde_Image_Translation::t("Unknown (%s)"), $data);
                             break;
                     }
                     break;
                 case '002e':
                     //Self Timer
                     switch ($data) {
                         case 1:
                             $data = Horde_Image_Translation::t("Off");
                             break;
                         case 2:
                             $data = Horde_Image_Translation::t("10s");
                             break;
                         case 3:
                             $data = Horde_Image_Translation::t("2s");
                             break;
                         default:
                             $data = sprintf(Horde_Image_Translation::t("Unknown (%s)"), $data);
                             break;
                     }
                     break;
                 case '0030':
                     //Rotation
                     switch ($data) {
                         case 1:
                             $data = Horde_Image_Translation::t("Horizontal (normal)");
                             break;
                         case 6:
                             $data = Horde_Image_Translation::t("Rotate 90 CW");
                             break;
                         case 8:
                             $data = Horde_Image_Translation::t("Rotate 270 CW");
                             break;
                         default:
                             $data = sprintf(Horde_Image_Translation::t("Unknown (%s)"), $data);
                             break;
                     }
                     break;
                 case '0032':
                     //Color Mode
                     switch ($data) {
                         case 0:
                             $data = Horde_Image_Translation::t("Normal");
                             break;
                         case 1:
                             $data = Horde_Image_Translation::t("Natural");
                             break;
                         default:
                             $data = sprintf(Horde_Image_Translation::t("Unknown (%s)"), $data);
                             break;
                     }
                     break;
                 case '0036':
                     //Travel Day
                     $data = $data;
                     break;
             }
             break;
         case 'UNDEFINED':
             break;
         default:
             $data = bin2hex($data);
             if ($intel) {
                 $data = Horde_Image_Exif::intel2Moto($data);
             }
             break;
     }
     return $data;
 }
コード例 #2
0
ファイル: Olympus.php プロジェクト: horde/horde
 /**
  *
  * @param $type
  * @param $tag
  * @param $intel
  * @param $data
  * @return unknown_type
  */
 protected function _formatData($type, $tag, $intel, $data)
 {
     switch ($type) {
         case 'ASCII':
         case 'UNDEFINED':
             break;
         case 'URATIONAL':
         case 'SRATIONAL':
             $data = bin2hex($data);
             if ($intel) {
                 $data = Horde_Image_Exif::intel2Moto($data);
             }
             $top = hexdec(substr($data, 8, 8));
             $bottom = hexdec(substr($data, 0, 8));
             if ($bottom) {
                 $data = $top / $bottom;
             } elseif (!$top) {
                 $data = 0;
             } else {
                 $data = $top . '/' . $bottom;
             }
             switch ($tag) {
                 case '0204':
                     //DigitalZoom
                     $data .= 'x';
                     break;
                 case '0205':
                     //Unknown2
                     $data = $top . '/' . $bottom;
                     break;
             }
             break;
         case 'USHORT':
         case 'SSHORT':
         case 'ULONG':
         case 'SLONG':
         case 'FLOAT':
         case 'DOUBLE':
             $data = bin2hex($data);
             if ($intel) {
                 $data = Horde_Image_Exif::intel2Moto($data);
             }
             $data = hexdec($data);
             switch ($tag) {
                 case '0201':
                     //JPEGQuality
                     switch ($data) {
                         case 1:
                             $data = 'SQ';
                             break;
                         case 2:
                             $data = 'HQ';
                             break;
                         case 3:
                             $data = 'SHQ';
                             break;
                         default:
                             $data = Horde_Image_Translation::t("Unknown") . ': ' . $data;
                             break;
                     }
                     break;
                 case '0202':
                     //Macro
                     switch ($data) {
                         case 0:
                             $data = 'Normal';
                             break;
                         case 1:
                             $data = 'Macro';
                             break;
                         default:
                             $data = Horde_Image_Translation::t("Unknown") . ': ' . $data;
                             break;
                     }
                     break;
             }
             break;
         default:
             $data = bin2hex($data);
             if ($intel) {
                 $data = Horde_Image_Exif::intel2Moto($data);
             }
             break;
     }
     return $data;
 }
コード例 #3
0
ファイル: Exif.php プロジェクト: horde/horde
 /**
  * Converts an exif field into human-readable form.
  *
  * Some of these cases are ported from the Exifer library, others were
  * changed from their implementation where the EXIF standard dictated
  * different behaviour.
  *
  * @param string $field  The name of the field to translate.
  * @param string $data   The data value to translate.
  *
  * @return string  The converted data.
  */
 public static function getHumanReadable($field, $data)
 {
     switch ($field) {
         case 'ExposureMode':
             switch ($data) {
                 case 0:
                     return Horde_Image_Translation::t("Auto exposure");
                 case 1:
                     return Horde_Image_Translation::t("Manual exposure");
                 case 2:
                     return Horde_Image_Translation::t("Auto bracket");
                 default:
                     return Horde_Image_Translation::t("Unknown");
             }
         case 'ExposureProgram':
             switch ($data) {
                 case 1:
                     return Horde_Image_Translation::t("Manual");
                 case 2:
                     return Horde_Image_Translation::t("Normal Program");
                 case 3:
                     return Horde_Image_Translation::t("Aperture Priority");
                 case 4:
                     return Horde_Image_Translation::t("Shutter Priority");
                 case 5:
                     return Horde_Image_Translation::t("Creative");
                 case 6:
                     return Horde_Image_Translation::t("Action");
                 case 7:
                     return Horde_Image_Translation::t("Portrait");
                 case 8:
                     return Horde_Image_Translation::t("Landscape");
                 default:
                     return Horde_Image_Translation::t("Unknown");
             }
         case 'XResolution':
         case 'YResolution':
             if (strpos($data, '/') !== false) {
                 list($n, $d) = explode('/', $data, 2);
                 return sprintf(Horde_Image_Translation::t("%d dots per unit"), $n);
             }
             return sprintf(Horde_Image_Translation::t("%d per unit"), $data);
         case 'ResolutionUnit':
             switch ($data) {
                 case 1:
                     return Horde_Image_Translation::t("Pixels");
                 case 2:
                     return Horde_Image_Translation::t("Inch");
                 case 3:
                     return Horde_Image_Translation::t("Centimeter");
                 default:
                     return Horde_Image_Translation::t("Unknown");
             }
         case 'ExifImageWidth':
         case 'ExifImageLength':
             return sprintf(Horde_Image_Translation::t("%d pixels"), $data);
         case 'Orientation':
             switch ($data) {
                 case 1:
                     return sprintf(Horde_Image_Translation::t("Normal (O deg)"));
                 case 2:
                     return sprintf(Horde_Image_Translation::t("Mirrored"));
                 case 3:
                     return sprintf(Horde_Image_Translation::t("Upsidedown"));
                 case 4:
                     return sprintf(Horde_Image_Translation::t("Upsidedown Mirrored"));
                 case 5:
                     return sprintf(Horde_Image_Translation::t("90 deg CW Mirrored"));
                 case 6:
                     return sprintf(Horde_Image_Translation::t("90 deg CCW"));
                 case 7:
                     return sprintf(Horde_Image_Translation::t("90 deg CCW Mirrored"));
                 case 8:
                     return sprintf(Horde_Image_Translation::t("90 deg CW"));
             }
             break;
         case 'ExposureTime':
             if (strpos($data, '/') !== false) {
                 list($n, $d) = explode('/', $data, 2);
                 if ($d == 0) {
                     return;
                 }
                 $data = $n / $d;
             }
             return self::_formatExposure($data);
         case 'ShutterSpeedValue':
             if (strpos($data, '/') !== false) {
                 list($n, $d) = explode('/', $data, 2);
                 if ($d == 0) {
                     return;
                 }
                 $data = $n / $d;
             }
             $data = exp($data * log(2));
             if ($data > 0) {
                 $data = 1 / $data;
             }
             return self::_formatExposure($data);
         case 'ApertureValue':
         case 'MaxApertureValue':
             if (strpos($data, '/') !== false) {
                 list($n, $d) = explode('/', $data, 2);
                 if ($d == 0) {
                     return;
                 }
                 $data = $n / $d;
                 $data = exp($data * log(2) / 2);
                 // Precision is 1 digit.
                 $data = round($data, 1);
             }
             return 'f/' . $data;
         case 'FocalLength':
             if (strpos($data, '/') !== false) {
                 list($n, $d) = explode('/', $data, 2);
                 if ($d == 0) {
                     return;
                 }
                 return sprintf(Horde_Image_Translation::t("%d mm"), round($n / $d));
             }
             return sprintf(Horde_Image_Translation::t("%d mm"), $data);
         case 'FNumber':
             if (strpos($data, '/') !== false) {
                 list($n, $d) = explode('/', $data, 2);
                 if ($d != 0) {
                     return 'f/' . round($n / $d, 1);
                 }
             }
             return 'f/' . $data;
         case 'ExposureBiasValue':
             if (strpos($data, '/') !== false) {
                 list($n, $d) = explode('/', $data, 2);
                 if ($n == 0) {
                     return '0 EV';
                 }
             }
             return $data . ' EV';
         case 'MeteringMode':
             switch ($data) {
                 case 0:
                     return Horde_Image_Translation::t("Unknown");
                 case 1:
                     return Horde_Image_Translation::t("Average");
                 case 2:
                     return Horde_Image_Translation::t("Center Weighted Average");
                 case 3:
                     return Horde_Image_Translation::t("Spot");
                 case 4:
                     return Horde_Image_Translation::t("Multi-Spot");
                 case 5:
                     return Horde_Image_Translation::t("Multi-Segment");
                 case 6:
                     return Horde_Image_Translation::t("Partial");
                 case 255:
                     return Horde_Image_Translation::t("Other");
                 default:
                     return sprintf(Horde_Image_Translation::t("Unknown: %s"), $data);
             }
             break;
         case 'LightSource':
             switch ($data) {
                 case 1:
                     return Horde_Image_Translation::t("Daylight");
                 case 2:
                     return Horde_Image_Translation::t("Fluorescent");
                 case 3:
                     return Horde_Image_Translation::t("Tungsten");
                 case 4:
                     return Horde_Image_Translation::t("Flash");
                 case 9:
                     return Horde_Image_Translation::t("Fine weather");
                 case 10:
                     return Horde_Image_Translation::t("Cloudy weather");
                 case 11:
                     return Horde_Image_Translation::t("Shade");
                 case 12:
                     return Horde_Image_Translation::t("Daylight fluorescent");
                 case 13:
                     return Horde_Image_Translation::t("Day white fluorescent");
                 case 14:
                     return Horde_Image_Translation::t("Cool white fluorescent");
                 case 15:
                     return Horde_Image_Translation::t("White fluorescent");
                 case 17:
                     return Horde_Image_Translation::t("Standard light A");
                 case 18:
                     return Horde_Image_Translation::t("Standard light B");
                 case 19:
                     return Horde_Image_Translation::t("Standard light C");
                 case 20:
                     return 'D55';
                 case 21:
                     return 'D65';
                 case 22:
                     return 'D75';
                 case 23:
                     return 'D50';
                 case 24:
                     return Horde_Image_Translation::t("ISO studio tungsten");
                 case 255:
                     return Horde_Image_Translation::t("other light source");
                 default:
                     return Horde_Image_Translation::t("Unknown");
             }
         case 'WhiteBalance':
             switch ($data) {
                 case 0:
                     return Horde_Image_Translation::t("Auto");
                 case 1:
                     return Horde_Image_Translation::t("Manual");
                 default:
                     Horde_Image_Translation::t("Unknown");
             }
             break;
         case 'FocalLengthIn35mmFilm':
             return $data . ' mm';
         case 'Flash':
             switch ($data) {
                 case 0:
                     return Horde_Image_Translation::t("No Flash");
                 case 1:
                     return Horde_Image_Translation::t("Flash");
                 case 5:
                     return Horde_Image_Translation::t("Flash, strobe return light not detected");
                 case 7:
                     return Horde_Image_Translation::t("Flash, strobe return light detected");
                 case 9:
                     return Horde_Image_Translation::t("Compulsory Flash");
                 case 13:
                     return Horde_Image_Translation::t("Compulsory Flash, Return light not detected");
                 case 15:
                     return Horde_Image_Translation::t("Compulsory Flash, Return light detected");
                 case 16:
                     return Horde_Image_Translation::t("No Flash");
                 case 24:
                     return Horde_Image_Translation::t("No Flash");
                 case 25:
                     return Horde_Image_Translation::t("Flash, Auto-Mode");
                 case 29:
                     return Horde_Image_Translation::t("Flash, Auto-Mode, Return light not detected");
                 case 31:
                     return Horde_Image_Translation::t("Flash, Auto-Mode, Return light detected");
                 case 32:
                     return Horde_Image_Translation::t("No Flash");
                 case 65:
                     return Horde_Image_Translation::t("Red Eye");
                 case 69:
                     return Horde_Image_Translation::t("Red Eye, Return light not detected");
                 case 71:
                     return Horde_Image_Translation::t("Red Eye, Return light detected");
                 case 73:
                     return Horde_Image_Translation::t("Red Eye, Compulsory Flash");
                 case 77:
                     return Horde_Image_Translation::t("Red Eye, Compulsory Flash, Return light not detected");
                 case 79:
                     return Horde_Image_Translation::t("Red Eye, Compulsory Flash, Return light detected");
                 case 89:
                     return Horde_Image_Translation::t("Red Eye, Auto-Mode");
                 case 93:
                     return Horde_Image_Translation::t("Red Eye, Auto-Mode, Return light not detected");
                 case 95:
                     return Horde_Image_Translation::t("Red Eye, Auto-Mode, Return light detected");
             }
             break;
         case 'FileSize':
             if ($data <= 0) {
                 return '0 Bytes';
             }
             $s = array('B', 'kB', 'MB', 'GB');
             $e = floor(log($data, 1024));
             return round($data / pow(1024, $e), 2) . ' ' . $s[$e];
         case 'SensingMethod':
             switch ($data) {
                 case 1:
                     return Horde_Image_Translation::t("Not defined");
                 case 2:
                     return Horde_Image_Translation::t("One Chip Color Area Sensor");
                 case 3:
                     return Horde_Image_Translation::t("Two Chip Color Area Sensor");
                 case 4:
                     return Horde_Image_Translation::t("Three Chip Color Area Sensor");
                 case 5:
                     return Horde_Image_Translation::t("Color Sequential Area Sensor");
                 case 7:
                     return Horde_Image_Translation::t("Trilinear Sensor");
                 case 8:
                     return Horde_Image_Translation::t("Color Sequential Linear Sensor");
                 default:
                     return Horde_Image_Translation::t("Unknown");
             }
         case 'ColorSpace':
             switch ($data) {
                 case 1:
                     return Horde_Image_Translation::t("sRGB");
                 default:
                     return Horde_Image_Translation::t("Uncalibrated");
             }
         case 'SceneCaptureType':
             switch ($data) {
                 case 0:
                     return Horde_Image_Translation::t("Standard");
                 case 1:
                     return Horde_Image_Translation::t("Landscape");
                 case 2:
                     return Horde_Image_Translation::t("Portrait");
                 case 3:
                     return Horde_Image_Translation::t("Night Scene");
                 default:
                     return Horde_Image_Translation::t("Unknown");
             }
         case 'DateTime':
         case 'DateTimeOriginal':
         case 'DateTimeDigitized':
             return date('m/d/Y H:i:s O', $data);
         case 'UserComment':
             //@TODO: the first 8 bytes of this field contain the charset used
             //       to encode the comment. Either ASCII, JIS, UNICODE, or
             //       UNDEFINED. Should probably either convert to a known charset
             //       here and let the calling code deal with it, or allow this
             //       method to take an optional charset to convert to (would
             //       introduce a dependency on Horde_String to do the conversion).
             $data = trim(substr($data, 7));
         default:
             return !empty($data) ? $data : '---';
     }
 }
コード例 #4
0
ファイル: Nikon.php プロジェクト: jubinpatel/horde
 /**
  *
  * @param $type
  * @param $tag
  * @param $intel
  * @param $model
  * @param $data
  * @return unknown_type
  */
 protected function _formatData($type, $tag, $intel, $model, $data)
 {
     switch ($type) {
         case 'URATIONAL':
         case 'SRATIONAL':
             $data = bin2hex($data);
             if ($intel) {
                 $data = Horde_Image_Exif::intel2Moto($data);
             }
             $top = hexdec(substr($data, 8, 8));
             $bottom = hexdec(substr($data, 0, 8));
             if ($bottom != 0) {
                 $data = $top / $bottom;
             } elseif ($top == 0) {
                 $data = 0;
             } else {
                 $data = $top . '/' . $bottom;
             }
             if ($tag == '0085' && $model == 1) {
                 //ManualFocusDistance
                 $data = $data . ' m';
             }
             if ($tag == '0086' && $model == 1) {
                 //DigitalZoom
                 $data = $data . 'x';
             }
             if ($tag == '000a' && $model == 0) {
                 //DigitalZoom
                 $data = $data . 'x';
             }
             break;
         case 'USHORT':
         case 'SSHORT':
         case 'ULONG':
         case 'SLONG':
         case 'FLOAT':
         case 'DOUBLE':
             $data = bin2hex($data);
             if ($intel) {
                 $data = Horde_Image_Exif::intel2Moto($data);
             }
             $data = hexdec($data);
             if ($model != 0) {
                 break;
             }
             switch ($tag) {
                 case '0003':
                     //Quality
                     switch ($data) {
                         case 1:
                             $data = Horde_Image_Translation::t("VGA Basic");
                             break;
                         case 2:
                             $data = Horde_Image_Translation::t("VGA Normal");
                             break;
                         case 3:
                             $data = Horde_Image_Translation::t("VGA Fine");
                             break;
                         case 4:
                             $data = Horde_Image_Translation::t("SXGA Basic");
                             break;
                         case 5:
                             $data = Horde_Image_Translation::t("SXGA Normal");
                             break;
                         case 6:
                             $data = Horde_Image_Translation::t("SXGA Fine");
                             break;
                         default:
                             $data = Horde_Image_Translation::t("Unknown") . ': ' . $data;
                             break;
                     }
                     break;
                 case '0004':
                     //Color
                     switch ($data) {
                         case 1:
                             $data = Horde_Image_Translation::t("Color");
                             break;
                         case 2:
                             $data = Horde_Image_Translation::t("Monochrome");
                             break;
                         default:
                             $data = Horde_Image_Translation::t("Unknown") . ': ' . $data;
                             break;
                     }
                     break;
                 case '0005':
                     //Image Adjustment
                     switch ($data) {
                         case 0:
                             $data = Horde_Image_Translation::t("Normal");
                             break;
                         case 1:
                             $data = Horde_Image_Translation::t("Bright+");
                             break;
                         case 2:
                             $data = Horde_Image_Translation::t("Bright-");
                             break;
                         case 3:
                             $data = Horde_Image_Translation::t("Contrast+");
                             break;
                         case 4:
                             $data = Horde_Image_Translation::t("Contrast-");
                             break;
                         default:
                             $data = Horde_Image_Translation::t("Unknown") . ': ' . $data;
                             break;
                     }
                     break;
                 case '0006':
                     //CCD Sensitivity
                     switch ($data) {
                         case 0:
                             $data = 'ISO-80';
                             break;
                         case 2:
                             $data = 'ISO-160';
                             break;
                         case 4:
                             $data = 'ISO-320';
                             break;
                         case 5:
                             $data = 'ISO-100';
                             break;
                         default:
                             $data = Horde_Image_Translation::t("Unknown") . ': ' . $data;
                             break;
                     }
                     break;
                 case '0007':
                     //White Balance
                     switch ($data) {
                         case 0:
                             $data = Horde_Image_Translation::t("Auto");
                             break;
                         case 1:
                             $data = Horde_Image_Translation::t("Preset");
                             break;
                         case 2:
                             $data = Horde_Image_Translation::t("Daylight");
                             break;
                         case 3:
                             $data = Horde_Image_Translation::t("Incandescense");
                             break;
                         case 4:
                             $data = Horde_Image_Translation::t("Flourescence");
                             break;
                         case 5:
                             $data = Horde_Image_Translation::t("Cloudy");
                             break;
                         case 6:
                             $data = Horde_Image_Translation::t("SpeedLight");
                             break;
                         default:
                             $data = Horde_Image_Translation::t("Unknown") . ': ' . $data;
                             break;
                     }
                     break;
                 case '000b':
                     //Converter
                     switch ($data) {
                         case 0:
                             $data = Horde_Image_Translation::t("None");
                             break;
                         case 1:
                             $data = Horde_Image_Translation::t("Fisheye");
                             break;
                         default:
                             $data = Horde_Image_Translation::t("Unknown") . ': ' . $data;
                             break;
                     }
                     break;
             }
         case 'UNDEFINED':
             if ($model != 1) {
                 break;
             }
             switch ($tag) {
                 case '0001':
                     $data = $data / 100;
                     break;
                 case '0088':
                     //AF Focus Position
                     $temp = Horde_Image_Translation::t("Center");
                     $data = bin2hex($data);
                     $data = str_replace('01', 'Top', $data);
                     $data = str_replace('02', 'Bottom', $data);
                     $data = str_replace('03', 'Left', $data);
                     $data = str_replace('04', 'Right', $data);
                     $data = str_replace('00', '', $data);
                     if (!strlen($data)) {
                         $data = $temp;
                     }
                     break;
             }
             break;
         default:
             $data = bin2hex($data);
             if ($intel) {
                 $data = Horde_Image_Exif::intel2Moto($data);
             }
             if ($model != 1) {
                 break;
             }
             switch ($tag) {
                 case '0083':
                     //Lens Type
                     $data = hexdec(substr($data, 0, 2));
                     switch ($data) {
                         case 0:
                             $data = Horde_Image_Translation::t("AF non D");
                             break;
                         case 1:
                             $data = Horde_Image_Translation::t("Manual");
                             break;
                         case 2:
                             $data = 'AF-D or AF-S';
                             break;
                         case 6:
                             $data = 'AF-D G';
                             break;
                         case 10:
                             $data = 'AF-D VR';
                             break;
                         default:
                             $data = Horde_Image_Translation::t("Unknown") . ': ' . $data;
                             break;
                     }
                     break;
                 case '0087':
                     //Flash type
                     $data = hexdec(substr($data, 0, 2));
                     switch ($data) {
                         case 0:
                             $data = Horde_Image_Translation::t("Did Not Fire");
                             break;
                         case 4:
                             $data = Horde_Image_Translation::t("Unknown");
                             break;
                         case 7:
                             $data = Horde_Image_Translation::t("External");
                             break;
                         case 9:
                             $data = Horde_Image_Translation::t("On Camera");
                             break;
                         default:
                             $data = Horde_Image_Translation::t("Unknown") . ': ' . $data;
                             break;
                     }
                     break;
             }
             break;
     }
     return $data;
 }
コード例 #5
0
ファイル: Canon.php プロジェクト: jubinpatel/horde
 /**
  * Formats Data for the data type
  */
 protected function _formatData($type, $tag, $intel, $data, $exif, &$result)
 {
     $place = 0;
     switch ($type) {
         case 'ASCII':
             $result = $data = str_replace('\\0', '', $data);
             break;
         case 'URATIONAL':
         case 'SRATIONAL':
             $data = bin2hex($data);
             if ($intel == 1) {
                 $data = Horde_Image_Exif::intel2Moto($data);
             }
             $top = hexdec(substr($data, 8, 8));
             $bottom = hexdec(substr($data, 0, 8));
             if ($bottom != 0) {
                 $data = $top / $bottom;
             } elseif ($top == 0) {
                 $data = 0;
             } else {
                 $data = $top . '/' . $bottom;
             }
             if ($tag == '0204') {
                 //DigitalZoom
                 $data = $data . 'x';
             }
         case 'USHORT':
         case 'SSHORT':
         case 'ULONG':
         case 'SLONG':
         case 'FLOAT':
         case 'DOUBLE':
             $data = bin2hex($data);
             $result['RAWDATA'] = $data;
             // TODO: split this code up
             switch ($tag) {
                 case '0001':
                     //first chunk
                     $result['Bytes'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     if ($result['Bytes'] != strlen($data) / 2) {
                         //Bad chunk
                         return $result;
                     }
                     $result['Macro'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //1
                     switch ($result['Macro']) {
                         case 1:
                             $result['Macro'] = Horde_Image_Translation::t("Macro");
                             break;
                         case 2:
                             $result['Macro'] = Horde_Image_Translation::t("Normal");
                             break;
                         default:
                             $result['Macro'] = Horde_Image_Translation::t("Unknown");
                     }
                     $result['SelfTimer'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //2
                     switch ($result['SelfTimer']) {
                         case 0:
                             $result['SelfTimer'] = Horde_Image_Translation::t("Off");
                             break;
                         default:
                             $result['SelfTimer'] .= Horde_Image_Translation::t("/10s");
                     }
                     $result['Quality'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //3
                     switch ($result['Quality']) {
                         case 2:
                             $result['Quality'] = Horde_Image_Translation::t("Normal");
                             break;
                         case 3:
                             $result['Quality'] = Horde_Image_Translation::t("Fine");
                             break;
                         case 5:
                             $result['Quality'] = Horde_Image_Translation::t("Superfine");
                             break;
                         default:
                             $result['Quality'] = Horde_Image_Translation::t("Unknown");
                     }
                     $result['Flash'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //4
                     switch ($result['Flash']) {
                         case 0:
                             $result['Flash'] = Horde_Image_Translation::t("Off");
                             break;
                         case 1:
                             $result['Flash'] = Horde_Image_Translation::t("Auto");
                             break;
                         case 2:
                             $result['Flash'] = Horde_Image_Translation::t("On");
                             break;
                         case 3:
                             $result['Flash'] = Horde_Image_Translation::t("Red Eye Reduction");
                             break;
                         case 4:
                             $result['Flash'] = Horde_Image_Translation::t("Slow Synchro");
                             break;
                         case 5:
                             $result['Flash'] = Horde_Image_Translation::t("Auto + Red Eye Reduction");
                             break;
                         case 6:
                             $result['Flash'] = Horde_Image_Translation::t("On + Red Eye Reduction");
                             break;
                         case 16:
                             $result['Flash'] = Horde_Image_Translation::t("External Flash");
                             break;
                         default:
                             $result['Flash'] = Horde_Image_Translation::t("Unknown");
                     }
                     $result['DriveMode'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //5
                     switch ($result['DriveMode']) {
                         case 0:
                             $result['DriveMode'] = Horde_Image_Translation::t("Single/Timer");
                             break;
                         case 1:
                             $result['DriveMode'] = Horde_Image_Translation::t("Continuous");
                             break;
                         default:
                             $result['DriveMode'] = Horde_Image_Translation::t("Unknown");
                     }
                     $result['Unknown'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //6
                     $result['FocusMode'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //7
                     switch ($result['FocusMode']) {
                         case 0:
                             $result['FocusMode'] = Horde_Image_Translation::t("One-Shot");
                             break;
                         case 1:
                             $result['FocusMode'] = Horde_Image_Translation::t("AI Servo");
                             break;
                         case 2:
                             $result['FocusMode'] = Horde_Image_Translation::t("AI Focus");
                             break;
                         case 3:
                             $result['FocusMode'] = Horde_Image_Translation::t("Manual Focus");
                             break;
                         case 4:
                             $result['FocusMode'] = Horde_Image_Translation::t("Single");
                             break;
                         case 5:
                             $result['FocusMode'] = Horde_Image_Translation::t("Continuous");
                             break;
                         case 6:
                             $result['FocusMode'] = Horde_Image_Translation::t("Manual Focus");
                             break;
                         default:
                             $result['FocusMode'] = Horde_Image_Translation::t("Unknown");
                     }
                     $result['Unknown'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //8
                     $result['Unknown'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //9
                     $result['ImageSize'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //10
                     switch ($result['ImageSize']) {
                         case 0:
                             $result['ImageSize'] = Horde_Image_Translation::t("Large");
                             break;
                         case 1:
                             $result['ImageSize'] = Horde_Image_Translation::t("Medium");
                             break;
                         case 2:
                             $result['ImageSize'] = Horde_Image_Translation::t("Small");
                             break;
                         default:
                             $result['ImageSize'] = Horde_Image_Translation::t("Unknown");
                     }
                     $result['EasyShooting'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //11
                     switch ($result['EasyShooting']) {
                         case 0:
                             $result['EasyShooting'] = Horde_Image_Translation::t("Full Auto");
                             break;
                         case 1:
                             $result['EasyShooting'] = Horde_Image_Translation::t("Manual");
                             break;
                         case 2:
                             $result['EasyShooting'] = Horde_Image_Translation::t("Landscape");
                             break;
                         case 3:
                             $result['EasyShooting'] = Horde_Image_Translation::t("Fast Shutter");
                             break;
                         case 4:
                             $result['EasyShooting'] = Horde_Image_Translation::t("Slow Shutter");
                             break;
                         case 5:
                             $result['EasyShooting'] = Horde_Image_Translation::t("Night");
                             break;
                         case 6:
                             $result['EasyShooting'] = Horde_Image_Translation::t("Black & White");
                             break;
                         case 7:
                             $result['EasyShooting'] = Horde_Image_Translation::t("Sepia");
                             break;
                         case 8:
                             $result['EasyShooting'] = Horde_Image_Translation::t("Portrait");
                             break;
                         case 9:
                             $result['EasyShooting'] = Horde_Image_Translation::t("Sport");
                             break;
                         case 10:
                             $result['EasyShooting'] = Horde_Image_Translation::t("Macro/Close-Up");
                             break;
                         case 11:
                             $result['EasyShooting'] = Horde_Image_Translation::t("Pan Focus");
                             break;
                         default:
                             $result['EasyShooting'] = Horde_Image_Translation::t("Unknown");
                     }
                     $result['DigitalZoom'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //12
                     switch ($result['DigitalZoom']) {
                         case 0:
                         case 65535:
                             $result['DigitalZoom'] = Horde_Image_Translation::t("None");
                             break;
                         case 1:
                             $result['DigitalZoom'] = Horde_Image_Translation::t("2x");
                             break;
                         case 2:
                             $result['DigitalZoom'] = Horde_Image_Translation::t("4x");
                             break;
                         default:
                             $result['DigitalZoom'] = Horde_Image_Translation::t("Unknown");
                     }
                     $result['Contrast'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //13
                     switch ($result['Contrast']) {
                         case 0:
                             $result['Contrast'] = Horde_Image_Translation::t("Normal");
                             break;
                         case 1:
                             $result['Contrast'] = Horde_Image_Translation::t("High");
                             break;
                         case 65535:
                             $result['Contrast'] = Horde_Image_Translation::t("Low");
                             break;
                         default:
                             $result['Contrast'] = Horde_Image_Translation::t("Unknown");
                     }
                     $result['Saturation'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //14
                     switch ($result['Saturation']) {
                         case 0:
                             $result['Saturation'] = Horde_Image_Translation::t("Normal");
                             break;
                         case 1:
                             $result['Saturation'] = Horde_Image_Translation::t("High");
                             break;
                         case 65535:
                             $result['Saturation'] = Horde_Image_Translation::t("Low");
                             break;
                         default:
                             $result['Saturation'] = Horde_Image_Translation::t("Unknown");
                     }
                     $result['Sharpness'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //15
                     switch ($result['Sharpness']) {
                         case 0:
                             $result['Sharpness'] = Horde_Image_Translation::t("Normal");
                             break;
                         case 1:
                             $result['Sharpness'] = Horde_Image_Translation::t("High");
                             break;
                         case 65535:
                             $result['Sharpness'] = Horde_Image_Translation::t("Low");
                             break;
                         default:
                             $result['Sharpness'] = Horde_Image_Translation::t("Unknown");
                     }
                     $result['ISO'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //16
                     switch ($result['ISO']) {
                         case 32767:
                         case 0:
                             $result['ISO'] = isset($exif['SubIFD']['ISOSpeedRatings']) ? $exif['SubIFD']['ISOSpeedRatings'] : 'Unknown';
                             break;
                         case 15:
                             $result['ISO'] = Horde_Image_Translation::t("Auto");
                             break;
                         case 16:
                             $result['ISO'] = 50;
                             break;
                         case 17:
                             $result['ISO'] = 100;
                             break;
                         case 18:
                             $result['ISO'] = 200;
                             break;
                         case 19:
                             $result['ISO'] = 400;
                             break;
                         default:
                             $result['ISO'] = Horde_Image_Translation::t("Unknown");
                     }
                     $result['MeteringMode'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //17
                     switch ($result['MeteringMode']) {
                         case 3:
                             $result['MeteringMode'] = Horde_Image_Translation::t("Evaluative");
                             break;
                         case 4:
                             $result['MeteringMode'] = Horde_Image_Translation::t("Partial");
                             break;
                         case 5:
                             $result['MeteringMode'] = Horde_Image_Translation::t("Center-weighted");
                             break;
                         default:
                             $result['MeteringMode'] = Horde_Image_Translation::t("Unknown");
                     }
                     $result['FocusType'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //18
                     switch ($result['FocusType']) {
                         case 0:
                             $result['FocusType'] = Horde_Image_Translation::t("Manual");
                             break;
                         case 1:
                             $result['FocusType'] = Horde_Image_Translation::t("Auto");
                             break;
                         case 3:
                             $result['FocusType'] = Horde_Image_Translation::t("Close-up (Macro)");
                             break;
                         case 8:
                             $result['FocusType'] = Horde_Image_Translation::t("Locked (Pan Mode)");
                             break;
                         default:
                             $result['FocusType'] = Horde_Image_Translation::t("Unknown");
                     }
                     $result['AFPointSelected'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //19
                     switch ($result['AFPointSelected']) {
                         case 12288:
                             $result['AFPointSelected'] = Horde_Image_Translation::t("Manual Focus");
                             break;
                         case 12289:
                             $result['AFPointSelected'] = Horde_Image_Translation::t("Auto Selected");
                             break;
                         case 12290:
                             $result['AFPointSelected'] = Horde_Image_Translation::t("Right");
                             break;
                         case 12291:
                             $result['AFPointSelected'] = Horde_Image_Translation::t("Center");
                             break;
                         case 12292:
                             $result['AFPointSelected'] = Horde_Image_Translation::t("Left");
                             break;
                         default:
                             $result['AFPointSelected'] = Horde_Image_Translation::t("Unknown");
                     }
                     $result['ExposureMode'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //20
                     switch ($result['ExposureMode']) {
                         case 0:
                             $result['ExposureMode'] = Horde_Image_Translation::t("EasyShoot");
                             break;
                         case 1:
                             $result['ExposureMode'] = Horde_Image_Translation::t("Program");
                             break;
                         case 2:
                             $result['ExposureMode'] = Horde_Image_Translation::t("Tv");
                             break;
                         case 3:
                             $result['ExposureMode'] = Horde_Image_Translation::t("Av");
                             break;
                         case 4:
                             $result['ExposureMode'] = Horde_Image_Translation::t("Manual");
                             break;
                         case 5:
                             $result['ExposureMode'] = Horde_Image_Translation::t("Auto-DEP");
                             break;
                         default:
                             $result['ExposureMode'] = Horde_Image_Translation::t("Unknown");
                     }
                     $result['Unknown'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //21
                     $result['Unknown'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //22
                     $result['LongFocalLength'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //23
                     $result['LongFocalLength'] .= 'focal units';
                     $result['ShortFocalLength'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //24
                     $result['ShortFocalLength'] .= ' focal units';
                     $result['FocalUnits'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //25
                     $result['FocalUnits'] .= ' per mm';
                     $result['Unknown'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //26
                     $result['Unknown'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //27
                     $result['FlashActivity'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //28
                     switch ($result['FlashActivity']) {
                         case 0:
                             $result['FlashActivity'] = Horde_Image_Translation::t("Flash Did Not Fire");
                             break;
                         case 1:
                             $result['FlashActivity'] = Horde_Image_Translation::t("Flash Fired");
                             break;
                         default:
                             $result['FlashActivity'] = Horde_Image_Translation::t("Unknown");
                     }
                     $result['FlashDetails'] = str_pad(base_convert(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)), 16, 2), 16, '0', STR_PAD_LEFT);
                     $place += 4;
                     //29
                     $flashDetails = array();
                     if (substr($result['FlashDetails'], 1, 1) == 1) {
                         $flashDetails[] = Horde_Image_Translation::t("External E-TTL");
                     }
                     if (substr($result['FlashDetails'], 2, 1) == 1) {
                         $flashDetails[] = Horde_Image_Translation::t("Internal Flash");
                     }
                     if (substr($result['FlashDetails'], 4, 1) == 1) {
                         $flashDetails[] = Horde_Image_Translation::t("FP sync used");
                     }
                     if (substr($result['FlashDetails'], 8, 1) == 1) {
                         $flashDetails[] = Horde_Image_Translation::t("2nd(rear)-curtain sync used");
                     }
                     if (substr($result['FlashDetails'], 12, 1) == 1) {
                         $flashDetails[] = Horde_Image_Translation::t("1st curtain sync");
                     }
                     $result['FlashDetails'] = implode(',', $flashDetails);
                     $result['Unknown'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //30
                     $result['Unknown'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //31
                     $anotherFocusMode = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //32
                     if (strpos(strtoupper($exif['IFD0']['Model']), 'G1') !== false) {
                         switch ($anotherFocusMode) {
                             case 0:
                                 $result['FocusMode'] = Horde_Image_Translation::t("Single");
                                 break;
                             case 1:
                                 $result['FocusMode'] = Horde_Image_Translation::t("Continuous");
                                 break;
                             default:
                                 $result['FocusMode'] = Horde_Image_Translation::t("Unknown");
                         }
                     }
                     break;
                 case '0004':
                     //second chunk
                     $result['Bytes'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //0
                     if ($result['Bytes'] != strlen($data) / 2) {
                         return $result;
                         //Bad chunk
                     }
                     $result['Unknown'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //1
                     $result['Unknown'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //2
                     $result['Unknown'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //3
                     $result['Unknown'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //4
                     $result['Unknown'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //5
                     $result['Unknown'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //6
                     $result['WhiteBalance'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //7
                     switch ($result['WhiteBalance']) {
                         case 0:
                             $result['WhiteBalance'] = Horde_Image_Translation::t("Auto");
                             break;
                         case 1:
                             $result['WhiteBalance'] = Horde_Image_Translation::t("Sunny");
                             break;
                         case 2:
                             $result['WhiteBalance'] = Horde_Image_Translation::t("Cloudy");
                             break;
                         case 3:
                             $result['WhiteBalance'] = Horde_Image_Translation::t("Tungsten");
                             break;
                         case 4:
                             $result['WhiteBalance'] = Horde_Image_Translation::t("Fluorescent");
                             break;
                         case 5:
                             $result['WhiteBalance'] = Horde_Image_Translation::t("Flash");
                             break;
                         case 6:
                             $result['WhiteBalance'] = Horde_Image_Translation::t("Custom");
                             break;
                         default:
                             $result['WhiteBalance'] = Horde_Image_Translation::t("Unknown");
                     }
                     $result['Unknown'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //8
                     $result['SequenceNumber'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //9
                     $result['Unknown'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //10
                     $result['Unknown'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //11
                     $result['Unknown'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //12
                     $result['Unknown'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //13
                     $result['AFPointUsed'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //14
                     $afPointUsed = array();
                     if ($result['AFPointUsed'] & 0x1) {
                         $afPointUsed[] = Horde_Image_Translation::t("Right");
                         //bit 0
                     }
                     if ($result['AFPointUsed'] & 0x2) {
                         $afPointUsed[] = Horde_Image_Translation::t("Center");
                         //bit 1
                     }
                     if ($result['AFPointUsed'] & 0x4) {
                         $afPointUsed[] = Horde_Image_Translation::t("Left");
                         //bit 2
                     }
                     if ($result['AFPointUsed'] & 0x800) {
                         $afPointUsed[] = 12;
                         //bit 12
                     }
                     if ($result['AFPointUsed'] & 0x1000) {
                         $afPointUsed[] = 13;
                         //bit 13
                     }
                     if ($result['AFPointUsed'] & 0x2000) {
                         $afPointUsed[] = 14;
                         //bit 14
                     }
                     if ($result['AFPointUsed'] & 0x4000) {
                         $afPointUsed[] = 15;
                         //bit 15
                     }
                     $result['AFPointUsed'] = implode(',', $afPointUsed);
                     $result['FlashBias'] = Horde_Image_Exif::intel2Moto(substr($data, $place, 4));
                     $place += 4;
                     //15
                     switch ($result['FlashBias']) {
                         case 'ffc0':
                             $result['FlashBias'] = '-2 EV';
                             break;
                         case 'ffcc':
                             $result['FlashBias'] = '-1.67 EV';
                             break;
                         case 'ffd0':
                             $result['FlashBias'] = '-1.5 EV';
                             break;
                         case 'ffd4':
                             $result['FlashBias'] = '-1.33 EV';
                             break;
                         case 'ffe0':
                             $result['FlashBias'] = '-1 EV';
                             break;
                         case 'ffec':
                             $result['FlashBias'] = '-0.67 EV';
                             break;
                         case 'fff0':
                             $result['FlashBias'] = '-0.5 EV';
                             break;
                         case 'fff4':
                             $result['FlashBias'] = '-0.33 EV';
                             break;
                         case '0000':
                             $result['FlashBias'] = '0 EV';
                             break;
                         case '000c':
                             $result['FlashBias'] = '0.33 EV';
                             break;
                         case '0010':
                             $result['FlashBias'] = '0.5 EV';
                             break;
                         case '0014':
                             $result['FlashBias'] = '0.67 EV';
                             break;
                         case '0020':
                             $result['FlashBias'] = '1 EV';
                             break;
                         case '002c':
                             $result['FlashBias'] = '1.33 EV';
                             break;
                         case '0030':
                             $result['FlashBias'] = '1.5 EV';
                             break;
                         case '0034':
                             $result['FlashBias'] = '1.67 EV';
                             break;
                         case '0040':
                             $result['FlashBias'] = '2 EV';
                             break;
                         default:
                             $result['FlashBias'] = Horde_Image_Translation::t("Unknown");
                     }
                     $result['Unknown'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //16
                     $result['Unknown'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //17
                     $result['Unknown'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //18
                     $result['SubjectDistance'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                     $place += 4;
                     //19
                     $result['SubjectDistance'] .= '/100 m';
                     break;
                 case '0008':
                     //image number
                     if ($intel == 1) {
                         $data = Horde_Image_Exif::intel2Moto($data);
                     }
                     $data = hexdec($data);
                     $result = round($data / 10000) . '-' . $data % 10000;
                     break;
                 case '000c':
                     //camera serial number
                     if ($intel == 1) {
                         $data = Horde_Image_Exif::intel2Moto($data);
                     }
                     $data = hexdec($data);
                     $result = '#' . bin2hex(substr($data, 0, 16)) . substr($data, 16, 16);
                     break;
             }
             break;
         default:
             if ($type != 'UNDEFINED') {
                 $data = bin2hex($data);
                 if ($intel == 1) {
                     $data = Horde_Image_Exif::intel2Moto($data);
                 }
             }
             break;
     }
     return $data;
 }
コード例 #6
0
ファイル: Fujifilm.php プロジェクト: raz0rsdge/horde
 /**
  *
  * @param $type
  * @param $tag
  * @param $intel
  * @param $data
  * @return unknown_type
  */
 protected function _formatData($type, $tag, $intel, $data)
 {
     switch ($type) {
         case 'ASCII':
         case 'UNDEFINED':
             break;
         case 'URATIONAL':
         case 'SRATIONAL':
             $data = bin2hex($data);
             if ($intel) {
                 $data = Horde_Image_Exif::intel2Moto($data);
             }
             $top = hexdec(substr($data, 8, 8));
             $bottom = hexdec(substr($data, 0, 8));
             if ($bottom) {
                 $data = $top / $bottom;
             } elseif (!$top) {
                 $data = 0;
             } else {
                 $data = $top . '/' . $bottom;
             }
             if ($tag == '1011') {
                 //FlashStrength
                 $data = $data . ' EV';
             }
             break;
         case 'USHORT':
         case 'SSHORT':
         case 'ULONG':
         case 'SLONG':
         case 'FLOAT':
         case 'DOUBLE':
             $data = bin2hex($data);
             if ($intel) {
                 $data = Horde_Image_Exif::intel2Moto($data);
             }
             $data = hexdec($data);
             switch ($tag) {
                 case '1001':
                     //Sharpness
                     switch ($data) {
                         case 1:
                             $data = Horde_Image_Translation::t("Soft");
                             break;
                         case 2:
                             $data = Horde_Image_Translation::t("Soft");
                             break;
                         case 3:
                             $data = Horde_Image_Translation::t("Normal");
                             break;
                         case 4:
                             $data = Horde_Image_Translation::t("Hard");
                             break;
                         case 5:
                             $data = Horde_Image_Translation::t("Hard");
                             break;
                         default:
                             $data = Horde_Image_Translation::t("Unknown") . ': ' . $data;
                             break;
                     }
                     break;
                 case '1002':
                     //WhiteBalance
                     switch ($data) {
                         case 0:
                             $data = Horde_Image_Translation::t("Auto");
                             break;
                         case 256:
                             $data = Horde_Image_Translation::t("Daylight");
                             break;
                         case 512:
                             $data = Horde_Image_Translation::t("Cloudy");
                             break;
                         case 768:
                             $data = Horde_Image_Translation::t("DaylightColor-fluorescence");
                             break;
                         case 769:
                             $data = Horde_Image_Translation::t("DaywhiteColor-fluorescence");
                             break;
                         case 770:
                             $data = Horde_Image_Translation::t("White-fluorescence");
                             break;
                         case 1024:
                             $data = Horde_Image_Translation::t("Incandescense");
                             break;
                         case 3840:
                             $data = Horde_Image_Translation::t("Custom");
                             break;
                         default:
                             $data = Horde_Image_Translation::t("Unknown") . ': ' . $data;
                             break;
                     }
                     break;
                 case '1003':
                     //Color
                     switch ($data) {
                         case 0:
                             $data = Horde_Image_Translation::t("Chroma Saturation Normal(STD)");
                             break;
                         case 256:
                             $data = Horde_Image_Translation::t("Chroma Saturation High");
                             break;
                         case 512:
                             $data = Horde_Image_Translation::t("Chroma Saturation Low(ORG)");
                             break;
                         default:
                             $data = Horde_Image_Translation::t("Unknown: ") . $data;
                             break;
                     }
                     break;
                 case '1004':
                     //Tone
                     switch ($data) {
                         case 0:
                             $data = Horde_Image_Translation::t("Contrast Normal(STD)");
                             break;
                         case 256:
                             $data = Horde_Image_Translation::t("Contrast High(HARD)");
                             break;
                         case 512:
                             $data = Horde_Image_Translation::t("Contrast Low(ORG)");
                             break;
                         default:
                             $data = Horde_Image_Translation::t("Unknown: ") . $data;
                             break;
                     }
                     break;
                 case '1010':
                     //FlashMode
                     switch ($data) {
                         case 0:
                             $data = Horde_Image_Translation::t("Auto");
                             break;
                         case 1:
                             $data = Horde_Image_Translation::t("On");
                             break;
                         case 2:
                             $data = Horde_Image_Translation::t("Off");
                             break;
                         case 3:
                             $data = Horde_Image_Translation::t("Red-Eye Reduction");
                             break;
                         default:
                             $data = Horde_Image_Translation::t("Unknown: ") . $data;
                             break;
                     }
                     break;
                 case '1020':
                     //Macro
                     switch ($data) {
                         case 0:
                             $data = Horde_Image_Translation::t("Off");
                             break;
                         case 1:
                             $data = Horde_Image_Translation::t("On");
                             break;
                         default:
                             $data = Horde_Image_Translation::t("Unknown: ") . $data;
                             break;
                     }
                     break;
                 case '1021':
                     //FocusMode
                     switch ($data) {
                         case 0:
                             $data = Horde_Image_Translation::t("Auto");
                             break;
                         case 1:
                             $data = Horde_Image_Translation::t("Manual");
                             break;
                         default:
                             $data = Horde_Image_Translation::t("Unknown: ") . $data;
                             break;
                     }
                     break;
                 case '1030':
                     //SlowSync
                     switch ($data) {
                         case 0:
                             $data = Horde_Image_Translation::t("Off");
                             break;
                         case 1:
                             $data = Horde_Image_Translation::t("On");
                             break;
                         default:
                             $data = Horde_Image_Translation::t("Unknown: ") . $data;
                             break;
                     }
                     break;
                 case '1031':
                     //PictureMode
                     switch ($data) {
                         case 0:
                             $data = Horde_Image_Translation::t("Auto");
                             break;
                         case 1:
                             $data = Horde_Image_Translation::t("Portrait");
                             break;
                         case 2:
                             $data = Horde_Image_Translation::t("Landscape");
                             break;
                         case 4:
                             $data = Horde_Image_Translation::t("Sports");
                             break;
                         case 5:
                             $data = Horde_Image_Translation::t("Night");
                             break;
                         case 6:
                             $data = Horde_Image_Translation::t("Program AE");
                             break;
                         case 256:
                             $data = Horde_Image_Translation::t("Aperture Prority AE");
                             break;
                         case 512:
                             $data = Horde_Image_Translation::t("Shutter Priority");
                             break;
                         case 768:
                             $data = Horde_Image_Translation::t("Manual Exposure");
                             break;
                         default:
                             $data = Horde_Image_Translation::t("Unknown: ") . $data;
                             break;
                     }
                     break;
                 case '1100':
                     //ContinuousTakingBracket
                     switch ($data) {
                         case 0:
                             $data = Horde_Image_Translation::t("Off");
                             break;
                         case 1:
                             $data = Horde_Image_Translation::t("On");
                             break;
                         default:
                             $data = Horde_Image_Translation::t("Unknown: ") . $data;
                             break;
                     }
                     break;
                 case '1300':
                     //BlurWarning
                     switch ($data) {
                         case 0:
                             $data = Horde_Image_Translation::t("No Warning");
                             break;
                         case 1:
                             $data = Horde_Image_Translation::t("Warning");
                             break;
                         default:
                             $data = Horde_Image_Translation::t("Unknown: ") . $data;
                             break;
                     }
                     break;
                 case '1301':
                     //FocusWarning
                     switch ($data) {
                         case 0:
                             $data = Horde_Image_Translation::t("Auto Focus Good");
                             break;
                         case 1:
                             $data = Horde_Image_Translation::t("Out of Focus");
                             break;
                         default:
                             $data = Horde_Image_Translation::t("Unknown: ") . $data;
                             break;
                     }
                     break;
                 case '1302':
                     //AEWarning
                     switch ($data) {
                         case 0:
                             $data = Horde_Image_Translation::t("AE Good");
                             break;
                         case 1:
                             $data = Horde_Image_Translation::t("Over Exposure");
                             break;
                         default:
                             $data = Horde_Image_Translation::t("Unknown: ") . $data;
                             break;
                     }
                     break;
             }
             break;
         default:
             $data = bin2hex($data);
             if ($intel) {
                 $data = Horde_Image_Exif::intel2Moto($data);
             }
             break;
     }
     return $data;
 }
コード例 #7
0
ファイル: Sanyo.php プロジェクト: horde/horde
 /**
  *
  * @param $type
  * @param $tag
  * @param $intel
  * @param $data
  * @return unknown_type
  */
 protected function _formatData($type, $tag, $intel, $data)
 {
     switch ($type) {
         case 'ASCII':
         case 'UNDEFINED':
             break;
         case 'URATIONAL':
         case 'SRATIONAL':
             $data = bin2hex($data);
             if ($intel) {
                 $data = Horde_Image_Exif::intel2Moto($data);
             }
             $top = hexdec(substr($data, 8, 8));
             $bottom = hexdec(substr($data, 0, 8));
             if ($bottom) {
                 $data = $top / $bottom;
             } elseif (!$top) {
                 $data = 0;
             } else {
                 $data = $top . '/' . $bottom;
             }
             break;
         case 'USHORT':
         case 'SSHORT':
         case 'ULONG':
         case 'SLONG':
         case 'FLOAT':
         case 'DOUBLE':
             $data = bin2hex($data);
             if ($intel) {
                 $data = Horde_Image_Exif::intel2Moto($data);
             }
             $data = hexdec($data);
             switch ($tag) {
                 case '0200':
                     //SpecialMode
                     $data = $data == 0 ? Horde_Image_Translation::t("Normal") : Horde_Image_Translation::t("Unknown") . ': ' . $data;
                     break;
                 case '0201':
                     //Quality
                     $data = $data == 2 ? Horde_Image_Translation::t("High") : Horde_Image_Translation::t("Unknown") . ': ' . $data;
                     break;
                 case '0202':
                     //Macro
                     $data = $data == 0 ? Horde_Image_Translation::t("Normal") : Horde_Image_Translation::t("Unknown") . ': ' . $data;
                     break;
             }
             break;
         default:
             $data = bin2hex($data);
             if ($intel) {
                 $data = Horde_Image_Exif::intel2Moto($data);
             }
     }
     return $data;
 }
コード例 #8
0
ファイル: Bundled.php プロジェクト: horde/horde
 /**
  *
  * @param $type
  * @param $tag
  * @param $intel
  * @param $data
  * @return unknown_type
  */
 protected function _formatData($type, $tag, $intel, $data)
 {
     switch ($type) {
         case 'ASCII':
             // Search for a null byte and stop there.
             if (($pos = strpos($data, chr(0))) !== false) {
                 $data = substr($data, 0, $pos);
             }
             // Format certain kinds of strings nicely (Camera make etc.)
             if ($tag == '010f') {
                 $data = Horde_String::ucwords(Horde_String::lower(trim($data)));
             }
             break;
         case 'URATIONAL':
         case 'SRATIONAL':
             $data = bin2hex($data);
             if ($intel == 1) {
                 $data = Horde_Image_Exif::intel2Moto($data);
             }
             if ($intel == 1) {
                 // intel stores them bottom-top
                 $top = hexdec(substr($data, 8, 8));
             } else {
                 // motorola stores them top-bottom
                 $top = hexdec(substr($data, 0, 8));
             }
             if ($intel == 1) {
                 // intel stores them bottom-top
                 $bottom = hexdec(substr($data, 0, 8));
             } else {
                 // motorola stores them top-bottom
                 $bottom = hexdec(substr($data, 8, 8));
             }
             if ($type == 'SRATIONAL' && $top > 2147483647) {
                 // this makes the number signed instead of unsigned
                 $top = $top - 4294967296;
             }
             if ($bottom != 0) {
                 $data = $top / $bottom;
             } elseif ($top == 0) {
                 $data = 0;
             } else {
                 $data = $top . '/' . $bottom;
             }
             // Exposure Time
             if ($tag == '829a') {
                 if ($bottom != 0) {
                     $data = $top . '/' . $bottom;
                 } else {
                     $data = 0;
                 }
             }
             break;
         case 'USHORT':
         case 'SSHORT':
         case 'ULONG':
         case 'SLONG':
         case 'FLOAT':
         case 'DOUBLE':
             $data = bin2hex($data);
             if ($intel == 1) {
                 $data = Horde_Image_Exif::intel2Moto($data);
             }
             if ($intel == 0 && ($type == 'USHORT' || $type == 'SSHORT')) {
                 $data = substr($data, 0, 4);
             }
             $data = hexdec($data);
             if ($type == 'SSHORT' && $data > 32767) {
                 // this makes the number signed instead of unsigned
                 $data = $data - 65536;
             }
             if ($type == 'SLONG' && $data > 2147483647) {
                 // this makes the number signed instead of unsigned
                 $data = $data - 4294967296;
             }
             break;
         case 'UNDEFINED':
             // ExifVersion,FlashPixVersion,InteroperabilityVersion
             if ($tag == '9000' || $tag == 'a000' || $tag == '0002') {
                 $data = sprintf(Horde_Image_Translation::t("version %d"), $data / 100);
             }
             break;
         default:
             $data = bin2hex($data);
             if ($intel == 1) {
                 $data = Horde_Image_Exif::intel2Moto($data);
             }
             break;
     }
     return $data;
 }
コード例 #9
0
ファイル: Translation.php プロジェクト: jubinpatel/horde
 /**
  * Returns the plural translation of a message.
  *
  * @param string $singular  The singular version to translate.
  * @param string $plural    The plural version to translate.
  * @param integer $number   The number that determines singular vs. plural.
  *
  * @return string  The string translation, or the original string if no
  *                 translation exists.
  */
 public static function ngettext($singular, $plural, $number)
 {
     self::$_domain = 'Horde_Image';
     self::$_directory = '@data_dir@' == '@' . 'data_dir' . '@' ? __DIR__ . '/../../../locale' : '@data_dir@/Horde_Image/locale';
     return parent::ngettext($singular, $plural, $number);
 }