Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?PHP
- CLASS ILLI_Container_Api_Image_Iptc
- {
- const IPTC_OBJECT_NAME = 005;
- const IPTC_EDIT_STATUS = 007;
- const IPTC_PRIORITY = 010;
- const IPTC_CATEGORY = 015;
- const IPTC_SUPPLEMENTAL_CATEGORY = 020;
- const IPTC_FIXTURE_IDENTIFIER = 022;
- const IPTC_KEYWORDS = 025;
- const IPTC_RELEASE_DATE = 030;
- const IPTC_RELEASE_TIME = 035;
- const IPTC_SPECIAL_INSTRUCTIONS = 040;
- const IPTC_REFERENCE_SERVICE = 045;
- const IPTC_REFERENCE_DATE = 047;
- const IPTC_REFERENCE_NUMBER = 050;
- const IPTC_CREATED_DATE = 055;
- const IPTC_CREATED_TIME = 060;
- const IPTC_ORIGINATING_PROGRAM = 065;
- const IPTC_PROGRAM_VERSION = 070;
- const IPTC_OBJECT_CYCLE = 075;
- const IPTC_BYLINE = 080;
- const IPTC_BYLINE_TITLE = 085;
- const IPTC_CITY = 090;
- const IPTC_PROVINCE_STATE = 095;
- const IPTC_COUNTRY_CODE = 100;
- const IPTC_COUNTRY = 101;
- const IPTC_ORIGINAL_TRANSMISSION_REFERENCE = 103;
- const IPTC_HEADLINE = 105;
- const IPTC_CREDIT = 110;
- const IPTC_SOURCE = 115;
- const IPTC_COPYRIGHT_STRING = 116;
- const IPTC_CAPTION = 120;
- const IPTC_LOCAL_CAPTION = 121;
- const RECORD = 2;
- private $metatable = array
- (
- 'objectname' => self::IPTC_OBJECT_NAME,
- 'editstatus' => self::IPTC_EDIT_STATUS,
- 'priority' => self::IPTC_PRIORITY,
- 'category' => self::IPTC_CATEGORY,
- 'supplementalcategory' => self::IPTC_SUPPLEMENTAL_CATEGORY,
- 'fixtureident' => self::IPTC_FIXTURE_IDENTIFIER,
- 'keywords' => self::IPTC_KEYWORDS,
- 'releasedate' => self::IPTC_RELEASE_DATE,
- 'releasetime' => self::IPTC_RELEASE_TIME,
- 'specialinstructions' => self::IPTC_SPECIAL_INSTRUCTIONS,
- 'referenceservice' => self::IPTC_REFERENCE_SERVICE,
- 'referencedate' => self::IPTC_REFERENCE_DATE,
- 'referencenumber' => self::IPTC_REFERENCE_NUMBER,
- 'createddate' => self::IPTC_CREATED_DATE,
- 'createdtime' => self::IPTC_CREATED_TIME,
- 'program' => self::IPTC_ORIGINATING_PROGRAM,
- 'programversion' => self::IPTC_PROGRAM_VERSION,
- 'objectcycle' => self::IPTC_OBJECT_CYCLE,
- 'byline' => self::IPTC_BYLINE,
- 'bylinetitle' => self::IPTC_BYLINE_TITLE,
- 'city' => self::IPTC_CITY,
- 'provincestate' => self::IPTC_PROVINCE_STATE,
- 'countrycode' => self::IPTC_COUNTRY_CODE,
- 'country' => self::IPTC_COUNTRY,
- 'transmissionreference' => self::IPTC_ORIGINAL_TRANSMISSION_REFERENCE,
- 'headline' => self::IPTC_HEADLINE,
- 'credit' => self::IPTC_CREDIT,
- 'source' => self::IPTC_SOURCE,
- 'copyright' => self::IPTC_COPYRIGHT_STRING,
- 'caption' => self::IPTC_CAPTION,
- 'localcaption' => self::IPTC_LOCAL_CAPTION,
- );
- private $path = NULL;
- private $meta = array();
- private $iptcmeta = '';
- public function __call($name, $value)
- {
- if(substr($name, 0,4) !== 'set_')
- return $this;
- $_name = strtolower(str_replace(substr($name, 0, 4), NULL, $name));
- if(!array_key_exists($_name, $this->metatable))
- return $this;
- if(!isset($value[1]))
- $value[1] = self::RECORD;
- if(($value[1] = intval($value[1])) === 0)
- $value[1] = self::RECORD;
- $this->meta[$value[1].'#'.$this->metatable[$_name]] = $value[0];
- return $this;
- }
- public function save($path)
- {
- if(FALSE === (bool) $this->meta)
- return $this;
- if(!file_exists($path))
- return $this;
- $this->path = $path;
- $this->iptcmeta = '';
- foreach($this->meta as $tag => $string)
- $this->iptcmeta .= $this->make_tag(substr($tag, 2), $string, substr($tag, 0, 1));
- $content = iptcembed($this->iptcmeta, $this->path);
- file_put_contents($this->path, $content);
- return $this;
- }
- public function make_tag($data, $value, $record = self::RECORD)
- {
- $length = strlen($value);
- $retval = chr(0x1C) . chr($record) . chr($data);
- if($length < 0x8000)
- {
- $retval .= chr($length >> 8) . chr($length & 0xFF);
- }
- else
- {
- $retval .= chr(0x80) .
- chr(0x04) .
- chr(($length >> 24) & 0xFF) .
- chr(($length >> 16) & 0xFF) .
- chr(($length >> 8) & 0xFF) .
- chr($length & 0xFF);
- }
- return $retval . $value;
- }
- }
- // using
- public function cache_Source($quality = 70)
- {
- $dest = ILLI_Constructeur::get_Instance(self::c_CNSTDR)->_APP->_CACHE_IMAGES.$this->get_CryptFile().$this->extension;
- if(TRUE === is_animgif($f = file_get_contents($this->file)))
- {
- //if(TRUE === @chmod(ILLI_Constructeur::get_Instance(self::c_CNSTDR)->_APP->_CACHE_IMAGES, 0777))
- file_put_contents($dest, $f);
- return $f;
- }
- ob_start();
- switch($this->type)
- {
- case 'png':
- $this->png($dest);
- break;
- case 'jpeg':
- $this->jpeg($dest, $quality);
- $IPCT = new ILLI_Container_Api_Image_Iptc;
- $IPCT
- ->set_caption('foobar')
- ->set_copyright('fruffl')
- ->save($dest);
- break;
- case 'gif':
- $this->gif($dest);
- break;
- default:
- $this->generate_ErrorImage();
- }
- return ob_get_clean();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement