일단, 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은 경로를 포함해서 써야 한다는 걸 잊지 말고.
답글 남기기