00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00018 final class ImageType extends Enumeration
00019 {
00020 const GIF = IMAGETYPE_GIF;
00021 const JPEG = IMAGETYPE_JPEG;
00022 const PNG = IMAGETYPE_PNG;
00023 const SWF = IMAGETYPE_SWF;
00024 const PSD = IMAGETYPE_PSD;
00025 const BMP = IMAGETYPE_BMP;
00026 const TIFF_II = IMAGETYPE_TIFF_II;
00027 const TIFF_MM = IMAGETYPE_TIFF_MM;
00028 const JPC = IMAGETYPE_JPC;
00029 const JP2 = IMAGETYPE_JP2;
00030 const JPX = IMAGETYPE_JPX;
00031 const JB2 = IMAGETYPE_JB2;
00032 const SWC = IMAGETYPE_SWC;
00033 const IFF = IMAGETYPE_IFF;
00034 const WBMP = IMAGETYPE_WBMP;
00035 const JPEG2000 = IMAGETYPE_JPEG2000;
00036 const XBM = IMAGETYPE_XBM;
00037
00038 protected $names = array(
00039 IMAGETYPE_GIF => 'gif',
00040 IMAGETYPE_JPEG => 'jpeg',
00041 IMAGETYPE_PNG => 'png',
00042 IMAGETYPE_SWF => 'swf',
00043 IMAGETYPE_PSD => 'psd',
00044 IMAGETYPE_BMP => 'bmp',
00045 IMAGETYPE_TIFF_II => 'tif',
00046 IMAGETYPE_TIFF_MM => 'tif',
00047 IMAGETYPE_JPC => 'jpc',
00048 IMAGETYPE_JP2 => 'jp2',
00049 IMAGETYPE_JPX => 'jpx',
00050 IMAGETYPE_JB2 => 'jb2',
00051 IMAGETYPE_SWC => 'swc',
00052 IMAGETYPE_IFF => 'iff',
00053 IMAGETYPE_WBMP => 'bmp',
00054 IMAGETYPE_JPEG2000 => 'jpc',
00055 IMAGETYPE_XBM => 'xbm'
00056 );
00057
00058 protected $extensions = array(
00059 'gif' => IMAGETYPE_GIF,
00060 'jpg' => IMAGETYPE_JPEG,
00061 'jpeg' => IMAGETYPE_JPEG,
00062 'png' => IMAGETYPE_PNG,
00063 'swf' => IMAGETYPE_SWF,
00064 'psd' => IMAGETYPE_PSD,
00065 'bmp' => IMAGETYPE_BMP,
00066 'tif' => IMAGETYPE_TIFF_II,
00067 'tiff' => IMAGETYPE_TIFF_II,
00068 'jpc' => IMAGETYPE_JPC,
00069 'jp2' => IMAGETYPE_JP2,
00070 'jpx' => IMAGETYPE_JPX,
00071 'jb2' => IMAGETYPE_JB2,
00072 'swc' => IMAGETYPE_SWC,
00073 'iff' => IMAGETYPE_IFF,
00074 'wbmp' => IMAGETYPE_WBMP,
00075 'jpc' => IMAGETYPE_JPEG2000,
00076 'xbm' => IMAGETYPE_XBM
00077 );
00078
00079 protected $mimeTypes = array(
00080 IMAGETYPE_GIF => 'image/gif',
00081 IMAGETYPE_JPEG => 'image/jpeg',
00082 IMAGETYPE_PNG => 'image/png',
00083 IMAGETYPE_SWF => 'application/x-shockwave-flash',
00084 IMAGETYPE_PSD => 'image/x-photoshop',
00085 IMAGETYPE_BMP => 'image/bmp',
00086 IMAGETYPE_TIFF_II => 'image/tiff',
00087 IMAGETYPE_TIFF_MM => 'image/tiff',
00088 IMAGETYPE_JPC => 'image/jpc',
00089 IMAGETYPE_JP2 => 'image/jp2',
00090 IMAGETYPE_JPX => 'image/jpx',
00091 IMAGETYPE_JB2 => 'image/jb2',
00092 IMAGETYPE_SWC => 'application/x-shockwave-flash',
00093 IMAGETYPE_IFF => 'image/iff',
00094 IMAGETYPE_WBMP => 'image/vnd.wap.wbmp',
00095 IMAGETYPE_JPEG2000 => 'image/jpeg',
00096 IMAGETYPE_XBM => 'image/xbm'
00097 );
00098
00099 public static function getAnyId()
00100 {
00101 return self::GIF;
00102 }
00103
00104 public function getMimeType()
00105 {
00106 return $this->mimeTypes[$this->id];
00107 }
00108
00109 public function getExtension()
00110 {
00111 $flippedExensions = array_flip($this->extensions);
00112
00113 return $flippedExensions[$this->id];
00114 }
00115
00116 public function getExtensionList()
00117 {
00118 return $this->extensions;
00119 }
00120
00121 public static function createByFileName($fileName)
00122 {
00123 $ext =
00124 strtolower(
00125 pathinfo($fileName, PATHINFO_EXTENSION)
00126 );
00127
00128 $anyImageType = new self(self::getAnyId());
00129 $extensionList = $anyImageType->getExtensionList();
00130
00131 if (isset($extensionList[$ext]))
00132 return new self($extensionList[$ext]);
00133
00134 throw new WrongArgumentException(
00135 "don't know type for '{$ext}' extension"
00136 );
00137 }
00138 }
00139 ?>