Revision: 25122
Updated Code
at March 20, 2010 22:15 by frankyfish
Updated Code
function getImageInfo($img) { $ret = array("title"=>"","description"=>""); if(!file_exists($img)) return $ret; $size = getimagesize($img, $info); if(!isset($info['APP13'])) return $ret; $iptc = iptcparse($info['APP13']); if(is_array($iptc["2#025"]) && count($iptc["2#025"])>0) $ret["tag"] = implode(", ", $iptc["2#025"]); if($iptc["2#005"][0] != null) $ret["title"] = $iptc["2#005"][0]; if($iptc["2#080"][0] != null) $ret["author"] = $iptc["2#080"][0]; if($iptc["2#085"][0] != null) $ret["credit"] = $iptc["2#085"][0]; if($iptc["2#090"][0] != null) $ret["city"] = $iptc["2#090"][0]; if($iptc["2#095"][0] != null) $ret["state"] = $iptc["2#095"][0]; if($iptc["2#101"][0] != null) $ret["country"] = $iptc["2#101"][0]; if($iptc["2#105"][0] != null) $ret["title"] = $iptc["2#105"][0]; if($iptc["2#116"][0] != null) $ret["copyright"] = $iptc["2#116"][0]; if($iptc["2#120"][0] != null) $ret["description"] = $iptc["2#120"][0]; if($iptc["2#122"][0] != null) $ret["author"] = $iptc["2#122"][0]; $xmp = getImageXMP($img); foreach($xmp as $key => $value) { if($value != null && $value != "") $ret[$key] = $value; } return $ret; } function getImageXMP($filename) { $file = fopen($filename, 'r'); $source = fread($file, filesize($filename)); $xmpdata_start = strpos($source,"<x:xmpmeta"); $xmpdata_end = strpos($source,"</x:xmpmeta>"); $xmplenght = $xmpdata_end-$xmpdata_start; $xmpdata = substr($source,$xmpdata_start,$xmplenght+12); fclose($file); $xmp_parsed = array(); $regexps = array( array("name" => "copyright", "regexp" => "/<dc:rights>\s*<rdf:Alt>\s*<rdf:li xml:lang=\"x-default\">(.+)<\/rdf:li>\s*<\/rdf:Alt>\s*<\/dc:rights>/"), array("name" => "author", "regexp" => "/<dc:creator>\s*<rdf:Seq>\s*<rdf:li>(.+)<\/rdf:li>\s*<\/rdf:Seq>\s*<\/dc:creator>/"), array("name" => "title", "regexp" => "/<dc:title>\s*<rdf:Alt>\s*<rdf:li xml:lang=\"x-default\">(.+)<\/rdf:li>\s*<\/rdf:Alt>\s*<\/dc:title>/"), array("name" => "description", "regexp" => "/<dc:description>\s*<rdf:Alt>\s*<rdf:li xml:lang=\"x-default\">(.+)<\/rdf:li>\s*<\/rdf:Alt>\s*<\/dc:description>/"), array("name" => "camera model", "regexp" => "/tiff:Model=\"(.[^\"]+)\"/"), array("name" => "maker", "regexp" => "/tiff:Make=\"(.[^\"]+)\"/"), array("name" => "width", "regexp" => "/tiff:ImageWidth=\"(.[^\"]+)\"/"), array("name" => "height", "regexp" => "/tiff:ImageLength=\"(.[^\"]+)\"/"), array("name" => "exposure time", "regexp" => "/exif:ExposureTime=\"(.[^\"]+)\"/"), array("name" => "f number", "regexp" => "/exif:FNumber=\"(.[^\"]+)\"/"), array("name" => "iso", "regexp" => "/<exif:ISOSpeedRatings>\s*<rdf:Seq>\s*<rdf:li>(.+)<\/rdf:li>\s*<\/rdf:Seq>\s*<\/exif:ISOSpeedRatings>/"), array("name" => "focal lenght", "regexp" => "/exif:FocalLength=\"(.[^\"]+)\"/"), array("name" => "user comment", "regexp" => "/<exif:UserComment>\s*<rdf:Alt>\s*<rdf:li xml:lang=\"x-default\">(.+)<\/rdf:li>\s*<\/rdf:Alt>\s*<\/exif:UserComment>/"), array("name" => "datetime original", "regexp" => "/xmp:CreateDate=\"(.[^\"]+)\"/"), array("name" => "lens", "regexp" => "/aux:Lens=\"(.[^\"]+)\"/") ); foreach ($regexps as $key => $k) { unset($r); preg_match ($k["regexp"], $xmpdata, $r); $xmp_item = @$r[1]; if(in_array($k["name"], array("f number", "focal lenght"))) eval("\$xmp_item = ".$xmp_item.";"); $xmp_parsed[$k["name"]] = str_replace("
", "\n", $xmp_item); } return $xmp_parsed; }
Revision: 25121
Updated Code
at March 20, 2010 21:11 by frankyfish
Updated Code
function getImageInfo($img) { $ret = array("title"=>"","description"=>""); if(!file_exists($img)) return $ret; $size = getimagesize($img, $info); if(!isset($info['APP13'])) return $ret; $iptc = iptcparse($info['APP13']); if($iptc["2#005"][0] != null) $ret["title"] = $iptc["2#005"][0]; if($iptc["2#105"][0] != null) $ret["title"] = $iptc["2#005"][0]; if($iptc["2#120"][0] != null) $ret["description"] = $iptc["2#120"][0]; $xmp = getImageXMP($img); if($xmp[2]["value"] != "") $ret["title"] = $xmp[2]["value"]; if($xmp[3]["value"] != "") $ret["description"] = $xmp[3]["value"]; return $ret; } function getImageXMP($filename) { $file = fopen($filename, 'r'); $source = fread($file, filesize($filename)); $xmpdata_start = strpos($source,"<x:xmpmeta"); $xmpdata_end = strpos($source,"</x:xmpmeta>"); $xmplenght = $xmpdata_end-$xmpdata_start; $xmpdata = substr($source,$xmpdata_start,$xmplenght+12); fclose($file); $xmp_parsed = array(); $regexps = array( array("name" => "rights", "regexp" => "/<dc:rights>\s*<rdf:Alt>\s*<rdf:li xml:lang=\"x-default\">(.+)<\/rdf:li>\s*<\/rdf:Alt>\s*<\/dc:rights>/"), array("name" => "creator", "regexp" => "/<dc:creator>\s*<rdf:Seq>\s*<rdf:li>(.+)<\/rdf:li>\s*<\/rdf:Seq>\s*<\/dc:creator>/"), array("name" => "title", "regexp" => "/<dc:title>\s*<rdf:Alt>\s*<rdf:li xml:lang=\"x-default\">(.+)<\/rdf:li>\s*<\/rdf:Alt>\s*<\/dc:title>/"), array("name" => "description", "regexp" => "/<dc:description>\s*<rdf:Alt>\s*<rdf:li xml:lang=\"x-default\">(.+)<\/rdf:li>\s*<\/rdf:Alt>\s*<\/dc:description>/"), array("name" => "camera model", "regexp" => "/tiff:Model=\"(.[^\"]+)\"/"), array("name" => "maker", "regexp" => "/tiff:Make=\"(.[^\"]+)\"/"), array("name" => "width", "regexp" => "/tiff:ImageWidth=\"(.[^\"]+)\"/"), array("name" => "height", "regexp" => "/tiff:ImageLength=\"(.[^\"]+)\"/"), array("name" => "exposure time", "regexp" => "/exif:ExposureTime=\"(.[^\"]+)\"/"), array("name" => "f number", "regexp" => "/exif:FNumber=\"(.[^\"]+)\"/"), array("name" => "iso", "regexp" => "/<exif:ISOSpeedRatings>\s*<rdf:Seq>\s*<rdf:li>(.+)<\/rdf:li>\s*<\/rdf:Seq>\s*<\/exif:ISOSpeedRatings>/"), array("name" => "focal lenght", "regexp" => "/exif:FocalLength=\"(.[^\"]+)\"/"), array("name" => "user comment", "regexp" => "/<exif:UserComment>\s*<rdf:Alt>\s*<rdf:li xml:lang=\"x-default\">(.+)<\/rdf:li>\s*<\/rdf:Alt>\s*<\/exif:UserComment>/"), array("name" => "datetime original", "regexp" => "/xmp:CreateDate=\"(.[^\"]+)\"/"), array("name" => "lens", "regexp" => "/aux:Lens=\"(.[^\"]+)\"/") ); foreach ($regexps as $key => $k) { unset($r); preg_match ($k["regexp"], $xmpdata, $r); $xmp_item = @$r[1]; if(in_array($k["name"], array("f number", "focal lenght"))) eval("\$xmp_item = ".$xmp_item.";"); array_push($xmp_parsed,array("item" => $k["name"], "value" => str_replace("
", "\n", $xmp_item))); } return ($xmp_parsed); }
Revision: 25120
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at March 20, 2010 21:10 by frankyfish
Initial Code
function getImageInfo($img) { $ret = array("title"=>"","description"=>""); if(!file_exists($img)) return $ret; $size = getimagesize($img, $info); if(!isset($info['APP13'])) return $ret; $iptc = iptcparse($info['APP13']); if($iptc["2#005"][0] != null) $ret["title"] = $iptc["2#005"][0]; if($iptc["2#105"][0] != null) $ret["title"] = $iptc["2#005"][0]; if($iptc["2#120"][0] != null) $ret["description"] = $iptc["2#120"][0]; $xmp = getImageXMP($img); if($xmp[2]["value"] != "") $ret["title"] = $xmp[2]["value"]; if($xmp[3]["value"] != "") $ret["description"] = $xmp[3]["value"]; return $ret; } function getImageXMP($filename) { $file = fopen($filename, 'r'); $source = fread($file, filesize($filename)); $xmpdata_start = strpos($source,"<x:xmpmeta"); $xmpdata_end = strpos($source,"</x:xmpmeta>"); $xmplenght = $xmpdata_end-$xmpdata_start; $xmpdata = substr($source,$xmpdata_start,$xmplenght+12); fclose($file); $xmp_parsed = array(); $regexps = array( array("name" => "rights", "regexp" => "/<dc:rights>\s*<rdf:Alt>\s*<rdf:li xml:lang=\"x-default\">(.+)<\/rdf:li>\s*<\/rdf:Alt>\s*<\/dc:rights>/"), array("name" => "creator", "regexp" => "/<dc:creator>\s*<rdf:Seq>\s*<rdf:li>(.+)<\/rdf:li>\s*<\/rdf:Seq>\s*<\/dc:creator>/"), array("name" => "title", "regexp" => "/<dc:title>\s*<rdf:Alt>\s*<rdf:li xml:lang=\"x-default\">(.+)<\/rdf:li>\s*<\/rdf:Alt>\s*<\/dc:title>/"), array("name" => "description", "regexp" => "/<dc:description>\s*<rdf:Alt>\s*<rdf:li xml:lang=\"x-default\">(.+)<\/rdf:li>\s*<\/rdf:Alt>\s*<\/dc:description>/"), array("name" => "camera model", "regexp" => "/tiff:Model=\"(.[^\"]+)\"/"), array("name" => "maker", "regexp" => "/tiff:Make=\"(.[^\"]+)\"/"), array("name" => "width", "regexp" => "/tiff:ImageWidth=\"(.[^\"]+)\"/"), array("name" => "height", "regexp" => "/tiff:ImageLength=\"(.[^\"]+)\"/"), array("name" => "exposure time", "regexp" => "/exif:ExposureTime=\"(.[^\"]+)\"/"), array("name" => "f number", "regexp" => "/exif:FNumber=\"(.[^\"]+)\"/"), array("name" => "iso", "regexp" => "/<exif:ISOSpeedRatings>\s*<rdf:Seq>\s*<rdf:li>(.+)<\/rdf:li>\s*<\/rdf:Seq>\s*<\/exif:ISOSpeedRatings>/"), array("name" => "focal lenght", "regexp" => "/exif:FocalLength=\"(.[^\"]+)\"/"), array("name" => "user comment", "regexp" => "/<exif:UserComment>\s*<rdf:Alt>\s*<rdf:li xml:lang=\"x-default\">(.+)<\/rdf:li>\s*<\/rdf:Alt>\s*<\/exif:UserComment>/"), array("name" => "datetime original", "regexp" => "/xmp:CreateDate=\"(.[^\"]+)\"/"), array("name" => "lens", "regexp" => "/aux:Lens=\"(.[^\"]+)\"/") ); foreach ($regexps as $key => $k) { unset($r); preg_match ($k["regexp"], $xmpdata, $r); $xmp_item = @$r[1]; if(in_array($k["name"], array("f number", "focal lenght"))) eval("\$xmp_item = ".$xmp_item.";"); array_push($xmp_parsed,array("item" => $k["name"], "value" => str_replace("
", "\n", $xmp_item))); } return ($xmp_parsed); }
Initial URL
Initial Description
Currenty getImagInfo() also call getImageXMP() so you only need the first function to get your infos.
Initial Title
Image Metadata Information EXIF AND XMP
Initial Tags
image
Initial Language
PHP