本文整理汇总了PHP中iptcparse函数的典型用法代码示例。如果您正苦于以下问题:PHP iptcparse函数的具体用法?PHP iptcparse怎么用?PHP iptcparse使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了iptcparse函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: title_and_caption_not_utf8
function title_and_caption_not_utf8($meta, $file)
{
if (!file_exists($file)) {
return false;
}
list(, , $sourceImageType) = getimagesize($file);
$meta = array();
if (is_callable('iptcparse')) {
getimagesize($file, $info);
if (!empty($info['APP13'])) {
$iptc = iptcparse($info['APP13']);
// headline, "A brief synopsis of the caption."
if (!empty($iptc['2#105'][0])) {
$meta['title'] = trim($iptc['2#105'][0]);
} elseif (!empty($iptc['2#005'][0])) {
$meta['title'] = trim($iptc['2#005'][0]);
}
if (!empty($iptc['2#120'][0])) {
// description / legacy caption
$caption = trim($iptc['2#120'][0]);
if (empty($meta['title'])) {
// Assume the title is stored in 2:120 if it's short.
if (strlen($caption) < 80) {
$meta['title'] = $caption;
} else {
$meta['caption'] = $caption;
}
} elseif ($caption != $meta['title']) {
$meta['caption'] = $caption;
}
}
}
}
return $meta;
}
示例2: __construct
/**
* Class constructor
*
* @param int $image Image ID
* @param bool $onlyEXIF TRUE = will parse only EXIF data
* @return bool FALSE if the file does not exist or metadat could not be read
*/
public function __construct($image, $onlyEXIF = FALSE)
{
if (is_numeric($image)) {
$image = $this->get_registry()->get_utility('I_Image_Mapper')->find($image);
}
$this->image = apply_filters('ngg_find_image_meta', $image);
$this->file_path = $this->get_registry()->get_utility('I_Gallery_Storage')->get_image_abspath($this->image);
if (!@file_exists($this->file_path)) {
return FALSE;
}
$this->size = @getimagesize($this->file_path, $metadata);
if ($this->size && is_array($metadata)) {
// get exif - data
if (is_callable('exif_read_data')) {
$this->exif_data = @exif_read_data($this->file_path, 0, TRUE);
}
// stop here if we didn't need other meta data
if ($onlyEXIF) {
return TRUE;
}
// get the iptc data - should be in APP13
if (is_callable('iptcparse') && isset($metadata['APP13'])) {
$this->iptc_data = @iptcparse($metadata['APP13']);
}
// get the xmp data in a XML format
if (is_callable('xml_parser_create')) {
$this->xmp_data = $this->extract_XMP($this->file_path);
}
return TRUE;
}
return FALSE;
}
示例3: PopulateExif
/**
* Get important EXIF information from the image
* @since Version 3.10.0
* @return array
* @param \Railpage\Gallery\Image $imageObject
*/
public static function PopulateExif($imageObject)
{
$imageSource = Album::ALBUMS_DIR . $imageObject->path;
/**
* Read the IPTC data
*/
#$size = getimagesize($imageSource, $info);
if (is_array($info)) {
$iptc = iptcparse($info["APP13"]);
if (isset($iptc['2#005'])) {
$imageObject->title = $iptc['2#005'][0];
}
}
/**
* Read the EXIF data
*/
$exif = exif_read_data($imageSource, 0, true);
if (isset($exif['IFD0']['ImageDescription'])) {
$imageObject->caption = $exif['IFD0']['ImageDescription'];
}
if (isset($exif['EXIF']['DateTimeOriginal'])) {
$imageObject->DateTaken = new DateTime($exif['EXIF']['DateTimeOriginal']);
}
if (isset($exif['GPS']['GPSLatitude']) && isset($exif['GPS']['GPSLongitude'])) {
$lat = self::getGps($exif['GPS']['GPSLatitude'], $exif['GPS']['GPSLatitudeRef']);
$lon = self::getGps($exif['GPS']['GPSLongitude'], $exif['GPS']['GPSLongitudeRef']);
$imageObject->Place = Place::Factory($lat, $lon);
}
return $imageObject;
}
示例4: nggMeta
/**
* nggMeta::nggMeta()
*
* @param int $image path to a image
* @param bool $onlyEXIF parse only exif if needed
* @return
*/
function nggMeta($pic_id, $onlyEXIF = false)
{
//get the path and other data about the image
$this->image = nggdb::find_image($pic_id);
$this->image = apply_filters('ngg_find_image_meta', $this->image);
if (!file_exists($this->image->imagePath)) {
return false;
}
$this->size = @getimagesize($this->image->imagePath, $metadata);
if ($this->size && is_array($metadata)) {
// get exif - data
if (is_callable('exif_read_data')) {
$this->exif_data = @exif_read_data($this->image->imagePath, 0, true);
}
// stop here if we didn't need other meta data
if ($onlyEXIF) {
return true;
}
// get the iptc data - should be in APP13
if (is_callable('iptcparse') && isset($metadata['APP13'])) {
$this->iptc_data = @iptcparse($metadata['APP13']);
}
// get the xmp data in a XML format
if (is_callable('xml_parser_create')) {
$this->xmp_data = $this->extract_XMP($this->image->imagePath);
}
return true;
}
return false;
}
示例5: item_created
/**
* Handle the creation of a new photo.
* @todo Get tags from the XMP and/or IPTC data in the image
*
* @param Item_Model $photo
*/
static function item_created($photo)
{
$tags = array();
if ($photo->is_photo()) {
$path = $photo->file_path();
$size = getimagesize($photo->file_path(), $info);
if (is_array($info) && !empty($info["APP13"])) {
$iptc = iptcparse($info["APP13"]);
if (!empty($iptc["2#025"])) {
foreach ($iptc["2#025"] as $tag) {
$tag = str_replace("", "", $tag);
foreach (explode(",", $tag) as $word) {
$word = trim($word);
if (function_exists("mb_detect_encoding") && mb_detect_encoding($word) != "UTF-8") {
$word = utf8_encode($word);
}
$tags[$word] = 1;
}
}
}
}
}
// @todo figure out how to read the keywords from xmp
foreach (array_keys($tags) as $tag) {
try {
tag::add($photo, $tag);
} catch (Exception $e) {
Kohana_Log::add("error", "Error adding tag: {$tag}\n" . $e->getMessage() . "\n" . $e->getTraceAsString());
}
}
return;
}
示例6: get_iptc_data
/**
* returns informations from IPTC metadata, mapping is done in this function.
*
* @param string $filename
* @param array $map
* @return array
*/
function get_iptc_data($filename, $map, $array_sep = ',')
{
global $conf;
$result = array();
$imginfo = array();
if (false == @getimagesize($filename, $imginfo)) {
return $result;
}
if (isset($imginfo['APP13'])) {
$iptc = iptcparse($imginfo['APP13']);
if (is_array($iptc)) {
$rmap = array_flip($map);
foreach (array_keys($rmap) as $iptc_key) {
if (isset($iptc[$iptc_key][0])) {
if ($iptc_key == '2#025') {
$value = implode($array_sep, array_map('clean_iptc_value', $iptc[$iptc_key]));
} else {
$value = clean_iptc_value($iptc[$iptc_key][0]);
}
foreach (array_keys($map, $iptc_key) as $pwg_key) {
$result[$pwg_key] = $value;
if (!$conf['allow_html_in_metadata']) {
// in case the origin of the photo is unsecure (user upload), we
// remove HTML tags to avoid XSS (malicious execution of
// javascript)
$result[$pwg_key] = strip_tags($result[$pwg_key]);
}
}
}
}
}
}
return $result;
}
示例7: iptcParser
/**
* Parse the iptc info and retrive the given value.
*
* Ref. http://codex.wordpress.org/Function_Reference/wp_read_image_metadata#Parameters
* WP already adds some IPTC data
*
* @param $value The item you want returned
* @param $image The image you want info from
*/
public function iptcParser($value = null, $image = null)
{
$size = getimagesize($image, $info);
if (!isset($info['APP13'])) {
return;
}
$iptc = iptcparse($info['APP13']);
switch ($value) {
case 'keywords':
if (isset($iptc['2#025'])) {
return $iptc['2#025'];
}
case 'city':
if (isset($iptc['2#090'][0])) {
return $iptc['2#090'][0];
}
case 'region':
if (isset($iptc['2#095'][0])) {
return $iptc['2#095'][0];
}
case 'country':
if (isset($iptc['2#101'][0])) {
return $iptc['2#101'][0];
}
default:
return false;
}
}
示例8: __construct
/**
* Parses the nggMeta data only if needed
* @param int $image path to a image
* @param bool $onlyEXIF parse only exif if needed
* @return
*/
function __construct($image_or_id, $onlyEXIF = false)
{
if (is_int($image_or_id)) {
//get the path and other data about the image
$this->image = C_Image_Mapper::get_instance()->find($image_or_id);
} else {
$this->image = $image_or_id;
}
$imagePath = C_Gallery_Storage::get_instance()->get_image_abspath($this->image);
if (!file_exists($imagePath)) {
return false;
}
$this->size = @getimagesize($imagePath, $metadata);
if ($this->size && is_array($metadata)) {
// get exif - data
if (is_callable('exif_read_data')) {
$this->exif_data = @exif_read_data($imagePath, NULL, TRUE);
}
// stop here if we didn't need other meta data
if ($onlyEXIF) {
return true;
}
// get the iptc data - should be in APP13
if (is_callable('iptcparse') && isset($metadata['APP13'])) {
$this->iptc_data = @iptcparse($metadata['APP13']);
}
// get the xmp data in a XML format
if (is_callable('xml_parser_create')) {
$this->xmp_data = $this->extract_XMP($imagePath);
}
return true;
}
return false;
}
示例9: parseImage
public static function parseImage($filename)
{
if (@getimagesize($filename, $data) && isset($data['APP13'])) {
return self::translateKeys(iptcparse($data['APP13']));
}
return null;
}
示例10: nggMeta
/**
* nggMeta::nggMeta()
*
* @param string $image path to a image
* @param bool $onlyEXIF parse only exif if needed
* @return
*/
function nggMeta($image, $onlyEXIF = false)
{
$this->imagePath = $image;
if (!file_exists($this->imagePath)) {
return false;
}
$size = @getimagesize($this->imagePath, $metadata);
if ($size && is_array($metadata)) {
// get exif - data
if (is_callable('exif_read_data')) {
$this->exif_data = @exif_read_data($this->imagePath, 0, true);
}
// stop here if we didn't need other meta data
if ($onlyEXIF) {
return true;
}
// get the iptc data - should be in APP13
if (is_callable('iptcparse')) {
$this->iptc_data = @iptcparse($metadata["APP13"]);
}
// get the xmp data in a XML format
if (is_callable('xml_parser_create')) {
$this->xmp_data = $this->extract_XMP($this->imagePath);
}
return true;
}
return false;
}
示例11: item_created
/**
* Handle the creation of a new photo.
* @todo Get tags from the XMP and/or IPTC data in the image
*
* @param Item_Model $photo
*/
static function item_created($photo)
{
$tags = array();
if ($photo->is_photo()) {
$path = $photo->file_path();
$size = getimagesize($photo->file_path(), $info);
if (is_array($info) && !empty($info["APP13"])) {
$iptc = iptcparse($info["APP13"]);
if (!empty($iptc["2#025"])) {
foreach ($iptc["2#025"] as $tag) {
$tag = str_replace("", "", $tag);
if (function_exists("mb_detect_encoding") && mb_detect_encoding($tag) != "UTF-8") {
$tag = utf8_encode($tag);
}
$tags[$tag] = 1;
}
}
}
}
// @todo figure out how to read the keywords from xmp
foreach (array_keys($tags) as $tag) {
tag::add($photo, $tag);
}
return;
}
示例12: parseIPTC
public function parseIPTC()
{
$aArr = @exif_read_data($this->sFilename, 'IDF0', true);
$size = getimagesize($this->sFilename, $info);
if (!isset($info['APP13'])) {
return false;
}
$iptc = iptcparse($info['APP13']);
if (isset($iptc["2#120"][0])) {
# caption
$this->aAttributes['title'] = trim($iptc["2#120"][0]);
} else {
if (isset($iptc["2#105"][0])) {
# headline
$this->aAttributes['title'] = trim($iptc["2#105"][0]);
} else {
if (isset($iptc["2#005"][0])) {
# graphic name
$this->aAttributes['title'] = trim($iptc["2#005"][0]);
}
}
}
if (isset($iptc["2#055"][0]) && isset($iptc["2#060"][0])) {
# creation date
$iTimestamp = self::timestampFromIPTC($iptc["2#055"][0], $iptc["2#060"][0]);
if ($iTimestamp !== false) {
$this->aAttributes['datetime'] = $iTimestamp;
}
}
return true;
}
示例13: iptc
public function iptc($filename)
{
$size = getimagesize($filename, $info);
if (isset($info["APP13"])) {
$this->_metadata = iptcparse($info["APP13"]);
}
$this->_file = $filename;
}
示例14: checkIptc
private function checkIptc()
{
getimagesize($this->_filename, $info);
if (isset($info['APP13'])) {
$this->_meta = iptcparse($info['APP13']);
return true;
}
}
示例15: __construct
public function __construct($file)
{
if (!(file_exists($file) && is_readable($file))) {
throw new FileReadException(sprintf('file %s in not readable', $file));
}
getimagesize($file, $this->iptc);
$this->iptc_app13 = @iptcparse($this->iptc['APP13']);
}