112 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			112 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
| <?php
 | |
| /**
 | |
|  * PHP Exif Reader: Reads EXIF metadata from a file
 | |
|  *
 | |
|  * @link        http://github.com/miljar/PHPExif for the canonical source repository
 | |
|  * @copyright   Copyright (c) 2013 Tom Van Herreweghe <tom@theanalogguy.be>
 | |
|  * @license     http://github.com/miljar/PHPExif/blob/master/LICENSE MIT License
 | |
|  * @category    PHPExif
 | |
|  * @package     Reader
 | |
|  */
 | |
| 
 | |
| namespace PHPExif\Reader;
 | |
| 
 | |
| use PHPExif\Adapter\AdapterInterface;
 | |
| use PHPExif\Adapter\NoAdapterException;
 | |
| use PHPExif\Adapter\Exiftool as ExiftoolAdapter;
 | |
| use PHPExif\Adapter\Native as NativeAdapter;
 | |
| 
 | |
| /**
 | |
|  * PHP Exif Reader
 | |
|  *
 | |
|  * Responsible for all the read operations on a file's EXIF metadata
 | |
|  *
 | |
|  * @category    PHPExif
 | |
|  * @package     Reader
 | |
|  * @
 | |
|  */
 | |
| class Reader implements ReaderInterface
 | |
| {
 | |
|     const TYPE_NATIVE   = 'native';
 | |
|     const TYPE_EXIFTOOL = 'exiftool';
 | |
| 
 | |
|     /**
 | |
|      * The current adapter
 | |
|      *
 | |
|      * @var \PHPExif\Adapter\AdapterInterface
 | |
|      */
 | |
|     protected $adapter;
 | |
| 
 | |
|     /**
 | |
|      * Reader constructor
 | |
|      *
 | |
|      * @param \PHPExif\Adapter\AdapterInterface $adapter
 | |
|      */
 | |
|     public function __construct(AdapterInterface $adapter)
 | |
|     {
 | |
|         $this->adapter = $adapter;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Getter for the reader adapter
 | |
|      *
 | |
|      * @return \PHPExif\Adapter\AdapterInterface
 | |
|      * @throws NoAdapterException When no adapter is set
 | |
|      */
 | |
|     public function getAdapter()
 | |
|     {
 | |
|         if (empty($this->adapter)) {
 | |
|             throw new NoAdapterException('No adapter set in the reader');
 | |
|         }
 | |
| 
 | |
|         return $this->adapter;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Factory for the reader
 | |
|      *
 | |
|      * @param string $type
 | |
|      * @return $this
 | |
|      * @throws \InvalidArgumentException When given type is invalid
 | |
|      */
 | |
|     public static function factory($type)
 | |
|     {
 | |
|         $classname = get_called_class();
 | |
|         switch ($type) {
 | |
|             case self::TYPE_NATIVE:
 | |
|                 $adapter = new NativeAdapter();
 | |
|                 break;
 | |
|             case self::TYPE_EXIFTOOL:
 | |
|                 $adapter = new ExiftoolAdapter();
 | |
|                 break;
 | |
|             default:
 | |
|                 throw new \InvalidArgumentException(
 | |
|                     sprintf('Unknown type "%1$s"', $type)
 | |
|                 );
 | |
|         }
 | |
|         return new $classname($adapter);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Reads & parses the EXIF data from given file
 | |
|      *
 | |
|      * @param string $file
 | |
|      * @return \PHPExif\Exif Instance of Exif object with data
 | |
|      */
 | |
|     public function read($file)
 | |
|     {
 | |
|         return $this->getAdapter()->getExifFromFile($file);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * alias to read method
 | |
|      *
 | |
|      * @param string $file
 | |
|      * @return \PHPExif\Exif Instance of Exif object with data
 | |
|      */
 | |
|     public function getExifFromFile($file)
 | |
|     {
 | |
|         return $this->read($file);
 | |
|     }
 | |
| }
 |