* @license http://github.com/miljar/PHPExif/blob/master/LICENSE MIT License * @category PHPExif * @package Exif */ namespace PHPExif; /** * PHP Exif Reader * * Responsible for all the read operations on a file's EXIF metadata * * @category PHPExif * @package Exif * @ */ class Exif { const APERTURE = 'aperture'; const AUTHOR = 'author'; const CAMERA = 'camera'; const CAPTION = 'caption'; const COLORSPACE = 'ColorSpace'; const COPYRIGHT = 'copyright'; const CREATION_DATE = 'creationdate'; const CREDIT = 'credit'; const EXPOSURE = 'exposure'; const FILESIZE = 'FileSize'; const FOCAL_LENGTH = 'focalLength'; const FOCAL_DISTANCE = 'focalDistance'; const HEADLINE = 'headline'; const HEIGHT = 'height'; const HORIZONTAL_RESOLUTION = 'horizontalResolution'; const ISO = 'iso'; const JOB_TITLE = 'jobTitle'; const KEYWORDS = 'keywords'; const MIMETYPE = 'MimeType'; const ORIENTATION = 'Orientation'; const SOFTWARE = 'software'; const SOURCE = 'source'; const TITLE = 'title'; const VERTICAL_RESOLUTION = 'verticalResolution'; const WIDTH = 'width'; const GPS = 'gps'; /** * The mapped EXIF data * * @var array */ protected $data = array(); /** * The raw EXIF data * * @var array */ protected $rawData = array(); /** * Class constructor * * @param array $data */ public function __construct(array $data = array()) { $this->setData($data); } /** * Sets the raw EXIF data * * @param array $data The data to set * @return \PHPExif\Exif Current instance for chaining */ public function setRawData(array $data) { $this->rawData = $data; return $this; } /** * Returns all EXIF data in the raw original format * * @return array */ public function getRawData() { return $this->rawData; } /** * Sets the mapped EXIF data * * @param array $data The data to set * @return \PHPExif\Exif Current instance for chaining */ public function setData(array $data) { $this->data = $data; return $this; } /** * Returns the mapped EXIF data * * @return array */ public function getData() { return $this->data; } /** * Returns the Aperture F-number * * @return string|boolean */ public function getAperture() { if (!isset($this->data[self::APERTURE])) { return false; } return $this->data[self::APERTURE]; } /** * Sets the Aperture F-number * * @param string $value * @return \PHPExif\Exif */ public function setAperture($value) { $this->data[self::APERTURE] = $value; return $this; } /** * Returns the Author * * @return string|boolean */ public function getAuthor() { if (!isset($this->data[self::AUTHOR])) { return false; } return $this->data[self::AUTHOR]; } /** * Sets the Author * * @param string $value * @return \PHPExif\Exif */ public function setAuthor($value) { $this->data[self::AUTHOR] = $value; return $this; } /** * Returns the Headline * * @return string|boolean */ public function getHeadline() { if (!isset($this->data[self::HEADLINE])) { return false; } return $this->data[self::HEADLINE]; } /** * Sets the Headline * * @param string $value * @return \PHPExif\Exif */ public function setHeadline($value) { $this->data[self::HEADLINE] = $value; return $this; } /** * Returns the Credit * * @return string|boolean */ public function getCredit() { if (!isset($this->data[self::CREDIT])) { return false; } return $this->data[self::CREDIT]; } /** * Sets the Credit * * @param string $value * @return \PHPExif\Exif */ public function setCredit($value) { $this->data[self::CREDIT] = $value; return $this; } /** * Returns the source * * @return string|boolean */ public function getSource() { if (!isset($this->data[self::SOURCE])) { return false; } return $this->data[self::SOURCE]; } /** * Sets the Source * * @param string $value * @return \PHPExif\Exif */ public function setSource($value) { $this->data[self::SOURCE] = $value; return $this; } /** * Returns the Jobtitle * * @return string|boolean */ public function getJobtitle() { if (!isset($this->data[self::JOB_TITLE])) { return false; } return $this->data[self::JOB_TITLE]; } /** * Sets the Jobtitle * * @param string $value * @return \PHPExif\Exif */ public function setJobtitle($value) { $this->data[self::JOB_TITLE] = $value; return $this; } /** * Returns the ISO speed * * @return int|boolean */ public function getIso() { if (!isset($this->data[self::ISO])) { return false; } return $this->data[self::ISO]; } /** * Sets the ISO * * @param int $value * @return \PHPExif\Exif */ public function setIso($value) { $this->data[self::ISO] = $value; return $this; } /** * Returns the Exposure * * @return string|boolean */ public function getExposure() { if (!isset($this->data[self::EXPOSURE])) { return false; } return $this->data[self::EXPOSURE]; } /** * Sets the Exposure * * @param string $value * @return \PHPExif\Exif */ public function setExposure($value) { $this->data[self::EXPOSURE] = $value; return $this; } /** * Returns the Exposure * * @return float|boolean */ public function getExposureMilliseconds() { if (!isset($this->data[self::EXPOSURE])) { return false; } if (is_numeric($this->data[self::EXPOSURE])) { return $this->data[self::EXPOSURE] + 0; } $exposureParts = explode('/', $this->data[self::EXPOSURE]); return (int) reset($exposureParts) / (int) end($exposureParts); } /** * Returns the focus distance, if it exists * * @return string|boolean */ public function getFocusDistance() { if (!isset($this->data[self::FOCAL_DISTANCE])) { return false; } return $this->data[self::FOCAL_DISTANCE]; } /** * Sets the focus distance * * @param string $value * @return \PHPExif\Exif */ public function setFocusDistance($value) { $this->data[self::FOCAL_DISTANCE] = $value; return $this; } /** * Returns the width in pixels, if it exists * * @return int|boolean */ public function getWidth() { if (!isset($this->data[self::WIDTH])) { return false; } return $this->data[self::WIDTH]; } /** * Sets the width * * @param int $value * @return \PHPExif\Exif */ public function setWidth($value) { $this->data[self::WIDTH] = $value; return $this; } /** * Returns the height in pixels, if it exists * * @return int|boolean */ public function getHeight() { if (!isset($this->data[self::HEIGHT])) { return false; } return $this->data[self::HEIGHT]; } /** * Sets the height * * @param int $value * @return \PHPExif\Exif */ public function setHeight($value) { $this->data[self::HEIGHT] = $value; return $this; } /** * Returns the title, if it exists * * @return string|boolean */ public function getTitle() { if (!isset($this->data[self::TITLE])) { return false; } return $this->data[self::TITLE]; } /** * Sets the title * * @param string $value * @return \PHPExif\Exif */ public function setTitle($value) { $this->data[self::TITLE] = $value; return $this; } /** * Returns the caption, if it exists * * @return string|boolean */ public function getCaption() { if (!isset($this->data[self::CAPTION])) { return false; } return $this->data[self::CAPTION]; } /** * Sets the caption * * @param string $value * @return \PHPExif\Exif */ public function setCaption($value) { $this->data[self::CAPTION] = $value; return $this; } /** * Returns the copyright, if it exists * * @return string|boolean */ public function getCopyright() { if (!isset($this->data[self::COPYRIGHT])) { return false; } return $this->data[self::COPYRIGHT]; } /** * Sets the copyright * * @param string $value * @return \PHPExif\Exif */ public function setCopyright($value) { $this->data[self::COPYRIGHT] = $value; return $this; } /** * Returns the keywords, if they exists * * @return array|boolean */ public function getKeywords() { if (!isset($this->data[self::KEYWORDS])) { return false; } return $this->data[self::KEYWORDS]; } /** * Sets the keywords * * @param array $value * @return \PHPExif\Exif */ public function setKeywords($value) { $this->data[self::KEYWORDS] = $value; return $this; } /** * Returns the camera, if it exists * * @return string|boolean */ public function getCamera() { if (!isset($this->data[self::CAMERA])) { return false; } return $this->data[self::CAMERA]; } /** * Sets the camera * * @param string $value * @return \PHPExif\Exif */ public function setCamera($value) { $this->data[self::CAMERA] = $value; return $this; } /** * Returns the horizontal resolution in DPI, if it exists * * @return int|boolean */ public function getHorizontalResolution() { if (!isset($this->data[self::HORIZONTAL_RESOLUTION])) { return false; } return $this->data[self::HORIZONTAL_RESOLUTION]; } /** * Sets the horizontal resolution in DPI * * @param int $value * @return \PHPExif\Exif */ public function setHorizontalResolution($value) { $this->data[self::HORIZONTAL_RESOLUTION] = $value; return $this; } /** * Returns the vertical resolution in DPI, if it exists * * @return int|boolean */ public function getVerticalResolution() { if (!isset($this->data[self::VERTICAL_RESOLUTION])) { return false; } return $this->data[self::VERTICAL_RESOLUTION]; } /** * Sets the vertical resolution in DPI * * @param int $value * @return \PHPExif\Exif */ public function setVerticalResolution($value) { $this->data[self::VERTICAL_RESOLUTION] = $value; return $this; } /** * Returns the software, if it exists * * @return string|boolean */ public function getSoftware() { if (!isset($this->data[self::SOFTWARE])) { return false; } return $this->data[self::SOFTWARE]; } /** * Sets the software * * @param string $value * @return \PHPExif\Exif */ public function setSoftware($value) { $this->data[self::SOFTWARE] = trim($value); return $this; } /** * Returns the focal length in mm, if it exists * * @return float|boolean */ public function getFocalLength() { if (!isset($this->data[self::FOCAL_LENGTH])) { return false; } return $this->data[self::FOCAL_LENGTH]; } /** * Sets the focal length in mm * * @param float $value * @return \PHPExif\Exif */ public function setFocalLength($value) { $this->data[self::FOCAL_LENGTH] = $value; return $this; } /** * Returns the creation datetime, if it exists * * @return \DateTime|boolean */ public function getCreationDate() { if (!isset($this->data[self::CREATION_DATE])) { return false; } return $this->data[self::CREATION_DATE]; } /** * Sets the creation datetime * * @param \DateTime $value * @return \PHPExif\Exif */ public function setCreationDate(\DateTime $value) { $this->data[self::CREATION_DATE] = $value; return $this; } /** * Returns the colorspace, if it exists * * @return string|boolean */ public function getColorSpace() { if (!isset($this->data[self::COLORSPACE])) { return false; } return $this->data[self::COLORSPACE]; } /** * Sets the colorspace * * @param string $value * @return \PHPExif\Exif */ public function setColorSpace($value) { $this->data[self::COLORSPACE] = $value; return $this; } /** * Returns the mimetype, if it exists * * @return string|boolean */ public function getMimeType() { if (!isset($this->data[self::MIMETYPE])) { return false; } return $this->data[self::MIMETYPE]; } /** * Sets the mimetype * * @param string $value * @return \PHPExif\Exif */ public function setMimeType($value) { $this->data[self::MIMETYPE] = $value; return $this; } /** * Returns the filesize, if it exists * * @return int|boolean */ public function getFileSize() { if (!isset($this->data[self::FILESIZE])) { return false; } return $this->data[self::FILESIZE]; } /** * Sets the filesize * * @param int $value * @return \PHPExif\Exif */ public function setFileSize($value) { $this->data[self::FILESIZE] = $value; return $this; } /** * Returns the orientation, if it exists * * @return int|boolean */ public function getOrientation() { if (!isset($this->data[self::ORIENTATION])) { return false; } return $this->data[self::ORIENTATION]; } /** * Sets the orientation * * @param int $value * @return \PHPExif\Exif */ public function setOrientation($value) { $this->data[self::ORIENTATION] = $value; return $this; } /** * Returns GPS coordinates, if it exists * * @return array|boolean */ public function getGPS() { if (!isset($this->data[self::GPS])) { return false; } return $this->data[self::GPS]; } /** * Sets the GPS coordinates * * @param string $value * @return \PHPExif\Exif */ public function setGPS($value) { $this->data[self::GPS] = $value; return $this; } }