dedijk4/vendor/miljar/php-exif/lib/PHPExif/Exif.php
2020-02-19 16:42:35 +01:00

844 lines
16 KiB
PHP
Executable File

<?php
/**
* PHP Exif Reader: Reads EXIF metadata from a file, without having to install additional PHP modules
*
* @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 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;
}
}