예전 글 ‘피카사와 구글어스를 이용하여 사진에 위치정보 태그 입력하기 ’(2008년 11월 3일 포스트)에서 간단히 언급한 바 있듯이, PICSTORY™ 님의 ‘사진 EXIF 정보 표시 플러그인 ’을 기본으로 Hy054nz 님의 ‘PS_ImagesExifView 플러그인에 GPS정보 추가 + 맵 링크’ 포스트에 소개된 내용을 적용하고 개인적으로 소스를 조금 수정하여 사용하였다. 이렇게 수정한 플러그인은 사진의 Exif(Exchangeable image file format, 교환이미지 파일형식) 에 저장된 일반적인 정보를 출력해주고, 만약 위치정보가 있다면 구글지도(Google Maps) 와 같은 인터넷 지도에서 그 위치를 손쉽게 찾을 수 있도록 링크를 만들어 준다. 하지만, 최근 텍스트큐브 1.8.3.1로 판올림 한 이후 이 플러그인에 필요한 EXIFutils 가 정상 작동하지만 플러그인은 작동하지 않았다.

구동환경 확인

블로그의 몇 가지 오류 해결 ’(2010년 4월 20일 포스트)에서 적었듯 EXIFutils는 사진에 저장된 ‘Exif (Exchangeable image file format, 교환사진 파일형식)’ 정보를 수정하는 프로그램으로 이 플러그인에서는 사진의 Exif 정보를 출력하는 용도로 사용된다.

glibc 버전 확인

EXIFutils 2.7.4는 glibc 2.3 이상에서 작동하므로 이를 확인해야 한다. 텍스트큐브의 관리자 페이지에서 텍스트큐브 관리 > 서비스 관리 > 시스템 정보에서 확인할 수 있다.

서버에 설치된 glibc의 버전이 2.7임을 보여주는 화면

서버에 설치된 glibc의 버전이 2.7임을 보여주는 화면.

EXIFutils 작동 여부 확인

EXIFutils의 작동 여부를 확인하는 방법은 이전 글 에서 적었으므로 간단히 요약하면, 관련 홈페이지 에서 내려받은 리눅스용 EXIFutils 압축 파일(EXIFutilsLinux2.7.4.tgz)을 서버에 올려놓은 다음 압축을 풀어 exiflist 파일을 실행하면 작동 여부를 확인할 수 있다. 터미널에서 EXIFutilsLinux2.7.4.tgz 파일이 있는 위치로 이동해 아래 명령어를 실행하면 EXIFutils를 설치하고 작동 여부를 확인할 수 있다.

$ tar xvzf EXIFutilsLinux2.7.4.tgz && cd EXIFutilsLinux2.7 && ./exiflist

디지털카메라 등으로 촬영하여 Exif 정보를 담은 사진이 있다면, 그 사진 파일(예: ex.jpg)을 exiflist 파일이 있는 디렉터리에 복사한 다음 터미널에서 아래 명령어를 실행해 해당 사진 파일의 Exif 정보를 확인할 수 있다.

$ ./exiflist ex.jpg

플러그인의 설치와 수정

플러그인 설치

텍스트큐브 홈페이지  플러그인 페이지에서 사진 EXIF 정보 표시 플러그인 압축 파일(PS_ImagesExifView.tar.gz)을 내려받아 압축을 푼다. 그리고 이 플러그인 디렉터리(PS_ImagesExifView) 안에 EXIFutils 압축 파일(EXIFutilsLinux2.7.4.tgz)의 압축을 푼다. 이때 아래 세 가지 조건을 반드시 만족시켜야 한다.

  1. EXIFutils의 디렉터리 명은 반드시 ‘EXIFutils’이어야 함.
  2. EXIFutils 디렉터리의 퍼미션은 777이어야 함.
  3. exiflist 파일의 퍼미션은 555나 505이어야 함.

플러그인 압축 파일과 EXIFutils 압축 파일을 서버의 /plugins 디렉터리에 올려놓고 이 디렉터리에서 아래 명령어를 실행하면 플러그인 및 EXIFutils가 설치되고, EXIFutils의 작동 여부를 확인한다.

$ tar -xvzf PS_ImagesExifView.tar.gz && cp EXIFutilsLinux2.7.4.tgz ./PS_ImagesExifView/ && cd PS_ImagesExifView && tar -xvzf EXIFutilsLinux2.7.4.tgz && mv EXIFutilsLinux2.7 EXIFutils && chmod 0777 EXIFutils && cd EXIFutils && chmod 555 exiflist && ./exiflist
플러그인과 EXIFutils 설치 및 EXIFutils의 작동 여부 확인

플러그인과 EXIFutils 설치 및 EXIFutils의 작동 여부 확인.

위 코드를 실행하였을 때 EXIFutils가 작동하지 않는다면 아래 명령어를 실행하여 exiflist 파일의 퍼미션을 505로 수정하고 다시 작동 여부를 확인한다.

$ chmod 505 exiflist && ./exiflist

소스 수정

플러그인 원본이 설치되었다. 이제 Hy054nz 님의 ‘PS_ImagesExifView 플러그인에 GPS정보 추가 + 맵 링크’ 포스트에 소개된 내용을 적용하고, 남반구와 북반구, 동경과 서경을 구분하는 부분, 감도의 세분화 등 개인적으로 아쉬운 부분을 수정한다. 하지만 이러한 작업을 마쳐도 텍스트큐브 1.8.x 버전에서는 플러그인이 작동하지 않는다.

문제를 발견했을 때 소스를 뒤져보니, 플러그인 내에서 이미지 파일의 주소를 정확하게 인식하지 못하고 있었다. 정확히는 $owner라는 전역 변수가 값을 가지지 않으면서 생기는 문제였다. 검색을 통해 TNF (Tatter Network Foundation forum)에서 결정적인 힌트가 되는 글 을 발견하였다. 소스 파일에 아래 두 줄을 추가함으로써 $owner에 필요한 값을 입력시키는 방법이었다.

$context = Model_Context::getInstance();
$owner = $context->getProperty('blog.id');

따라서 index.php 파일에서 ‘getImageExifView’와 ‘getImageFreeExifView’ function에 각각 위 두 줄을 아래와 같이 끼워넣으면 된다.

...
requireComponent('Tattertools.Function.misc');
$context = Model_Context::getInstance(); // 1.8.x 버전에서 $owner 설정을 위해 추가
$owner = $context->getProperty('blog.id'); // 1.8.x 버전에서 $owner 설정을 위해 추가
$data = misc::fetchConfigVal($configVal);
...

플러그인 사용

플러그인의 설치와 수정 작업이 끝났다. 이제 텍스트큐브 관리자 페이지의 플러그인 페이지에서 ‘PS Image EXIF View’를 클릭해 활성화하고 환경설정을 저장하면 플러그인 사용을 위한 준비가 마무리되었다. Exif 정보가 저장된 사진 파일을 첨부하면 아래와 같이 각 사진의 정보가 그 사진 아래에 표시된다.

플러그인이 작동하지 않은 상태에서의 사진

플러그인이 작동하지 않은 상태에서의 사진.

플러그인이 작동하는 상태에서의 사진

플러그인이 작동하는 상태에서의 사진.

플러그인 테스트를 위한 이미지
DMC-LX2 | 35mm equiv 46mm | ISO 100/21˚ | F5.6 | 1/250sec | 2009-08-23 11:47:00
Latitude : N36˚47´52.348˝ | Longitude : E126˚08´56.133˝ | Altitude : 0.00m | Naver Map | Google Maps

플러그인 테스트를 위한 이미지. ⓒ 2009 by 방형준(才誠). (Panasonic DMC-LX2)

ⓒ 2010 by 방형준(才誠)

크리에이티브 커먼즈 라이센스
Creative Commons License
리베로타운의 재성才誠입니다.

개인적인 글을 제외한 모든 글은 원문의 출처를 밝히고 링크하면 자유롭게 사용할 수 있지만, 전체 글을 퍼가는 행위는 허용하지 않습니다. 개인적인 수집 목적으로 전체 글을 퍼가시는 경우 비공개로 설정하시기 바랍니다.

글을 다 보셨으면 아래에 의견을 남겨주세요. 또 아래에 있는 간단한 설문에 참여해주세요. 약 1분 정도 소요됩니다.
이 글의 관련 글

Trackback URL: http://www.liberotown.com/trackback/182

Leave a comment
[로그인][오픈아이디란?]