ImageType.class.php

Go to the documentation of this file.
00001 <?php
00002 /***************************************************************************
00003  *   Copyright (C) 2006-2007 by Konstantin V. Arkhipov                     *
00004  *                                                                         *
00005  *   This program is free software; you can redistribute it and/or modify  *
00006  *   it under the terms of the GNU Lesser General Public License as        *
00007  *   published by the Free Software Foundation; either version 3 of the    *
00008  *   License, or (at your option) any later version.                       *
00009  *                                                                         *
00010  ***************************************************************************/
00011 /* $Id: ImageType.class.php 4687 2007-12-09 18:57:18Z voxus $ */
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 ?>

Generated on Sun Dec 9 21:56:23 2007 for onPHP by  doxygen 1.5.4