일단, EXIF와 IPTC를 뽑는 함수는 대부분의 PHP에 설치돼 있는 것 같다. 버전 4도 지원하는 듯하다.
php 공식 홈페이지의 설명을 보자.
그리고 위의 설명과 댓글을 참고해 내가 만든 함수다.
function viewPhotoInfoArray($image_filename){
/**
* exif 뽑아서 출력
* @var unknown_type
*/
echo '<h2>EXIF data</h2>';
$exif = exif_read_data($image_filename, 'IFD0');
echo $exif===false ? "No header data found.<비알/>\n" : "Image contains headers<비알/>\n";
$exif = exif_read_data($image_filename, 0, true);
echo "$image_filename :<비알/>\n";
foreach ($exif as $key => $section) {
foreach ($section as $name => $val) {
echo "$key.$name: $val<비알/>\n";
}
}
/**
* iptc 뽑아서 출력
* @var unknown_type
*/
$size = GetImageSize ("$image_filename",&$info);
$iptc = iptcparse ($info["APP13"]);
if (isset($info["APP13"])) {
$iptc = iptcparse($info["APP13"]);
if (is_array($iptc)) {
/**
* 저장된 그대로 뽑아서 보여준다.
*/
echo '<h2>IPTC raw data</h2>';
foreach ($iptc as $key => $section) {
foreach ($section as $name => $val) {
echo "$key.$name: $val<비알/>\n";
}
}
/**
* 나름대로 문자열로 설명을 달아서 보여 준다.
*/
$photo_info_array[description] = $iptc["2#120"][0];
$photo_info_array[headline] = $iptc["2#105"][0];
$photo_info_array[description_writer] = $iptc['2#122'][0];
$photo_info_array[creator] = $iptc["2#080"][0];
$photo_info_array[copyright_notice] = $iptc["2#116"][0];
$photo_info_array[source] = $iptc["2#110"][0];
$photo_info_array[keyword] = $iptc['2#025'];
$photo_info_array[graphic_name] = $iptc["2#005"][0];
$photo_info_array[urgency] = $iptc["2#010"][0];
$photo_info_array[category] = $iptc["2#015"][0];
// note that sometimes supp_categories contans multiple entries
$photo_info_array[supp_categories] = $iptc["2#020"][0];
$photo_info_array[spec_instr] = $iptc["2#040"][0];
$photo_info_array[creation_date] = $iptc["2#055"][0];
$photo_info_array[credit_byline_title] = $iptc["2#085"][0];
$photo_info_array[city] = $iptc["2#090"][0];
$photo_info_array[state] = $iptc["2#095"][0];
$photo_info_array[country] = $iptc["2#101"][0];
$photo_info_array[otr] = $iptc["2#103"][0];
$photo_info_array[photo_source] = $iptc["2#115"][0];
$photo_info_array = $iptc["2#120"][0];
}
echo '<h2>IPTC to String</h2>';
foreach ($photo_info_array as $key => $val) {
if(!is_array($val)){
echo "$key: $val<비알/>\n";
}else{
foreach ($val as $section => $keyword_val){
echo "$key.$section: $keyword_val<비알/>\n";
}
}
}
}
}
<br/>이 자꾸 코드 그대로 안 나와서 <비알/>로 썼다.
뭐 굳이 구절구절 설명 달 필요 없을 것 같다. 위 함수는 보여 주는 함수니까 알아서 잘 사용하기 바란다.
그리고 $miage_filename은 경로를 포함해서 써야 한다는 걸 잊지 말고.










댓글 남기기