Q&A

exif를 제거하고 PHP_EXIF 애드온으로 exif 보여주는 방법이 있을까요?

2023.07.03 04:48
182
0
CMS/프레임워크 Rhymix 2.1
개발 언어 PHP 7.4

제가 요며칠 갤러리 게시판을 구성하고자 

PHP_EXIF 애드온을 설치했습니다. 

https://xetown.com/download/1772034

 

이미지 프로세스 모듈 관리에서는 imagick을 사용으로 하고

스크린샷 2023-07-03 133810.png

 

파일관리에서는 exif 제거를 선택했습니다.

 

스크린샷 2023-07-03 133916.png

 

이렇게 하고 업로드를 해보니 첨부된 이미지의 용량이 확연하게 줄어들기는 하는데요.

exif 정보는 위의 스샷처럼 exif를 제거하였기에 안 나옵니다.

 

검색을 해보니 exif를 제거하는 대부분의 이유가 용량을 줄이기 위해서 많이들 사용하던데요.

예전에 어느글인가에서 본 거 같은데 제거한 exif를 php를 활용하여 PHP_EXIF 애드온으로 보여줄 수 있다고 들었습니다.

지금 다시 검색해보니 해당 글이 안보이는데 알고 계신 분 계실까요?

 

아래는 제가 이미지 프로세스 모듈 관리에서 선택한 옵션입니다.

스크린샷 2023-07-03 134714.png

성운시연 Lv. 5

댓글 9

  • 2023.07.03 06:03 #1772203

    한 번 삭제한 데이터를 보여줄 수는 없습니다. 애드온 따위로 복구할 수 있다면 exif를 제거하는 의미가 없겠지요. 앞으로라도 보여주고 싶다면 exif를 제거하는 기능을 모두 끄셔야 합니다. 단, 코어에서 이미지 크기나 회전 수정이 들어갈 경우, 변환 과정에서 exif 정보가 유실될 수 있습니다. 따라서 exif 제거 기능을 끄더라도 그대로 남아 있다는 보장은 없습니다. 이미지프로세스 모듈은 어떤 방식으로 작동하는지 모르겠네요.

     

    exif가 차지하는 용량은 얼마 안 됩니다. 많은 사이트에서 이것을 제거하는 이유는 촬영한 위치의 GPS 좌표, 자르거나 편집하기 전의 원본 썸네일 등 개인정보가 노출될 수 있는 정보가 포함되어 있기 때문입니다. (어설픈 테러범이 좌표 찍힌 사진을 SNS에 올렸다가 폭격을 당한 사례도 있고, 유명 연예인이 사진 일부만 잘라서 올렸다가 원본 썸네일이 노출되어 곤혹을 치른 적도 있지요.) 물론 사진 동호회 같은 곳에서는 촬영한 위치, 카메라 기종, 사용한 렌즈, 노출시간 등을 인증하기 위해 일부러 exif를 보여주는 경우도 있습니다.

  • 2023.07.03 08:53 #1772243
    테스트 해보니 exif가 차지하는 용량이 엄청 차이 나더라구요. 10메가 짜리 사진을 등록하면서 exif만 제거해도 절반 가까이 줄어들더라구요. 거기다가 이미지 사이즈까지 1920px로 줄여주니 1메가도 안되는 용량이 되던데요...
  • 2023.07.03 13:44 #1772252
    exif를 제거하는 과정에서 낮은 화질로 재인코딩되어서 용량이 줄어든 것 아닐까요? exif만 제거하고 이미지 데이터를 그대로 남겨두는 기능은 코어에 없거든요. 크기 변경이든 exif 제거든, 어떤 조작이라도 하면 무조건 코어에서 설정된 화질(기본값 75%)로 재인코딩됩니다.
  • 2023.07.04 11:49 #1772336
    테스트를 해보니 75%로 재인코딩 + 사진 리사이징인거 같습니다. 이미지가 리사이징 되면서 exif 정보가 다 날아가 버리네요.. 리사이징이 되더라도 exif 정보를 살리는 방법은 없을까요?
  • 2023.07.04 12:11 #1772340
    네, PHP에서 기본으로 사용하는 GD 라이브러리는 exif 정보를 보존하지 않습니다. Imagick은 방법이 있는데, 아래에 카르마님께서 설명해 주신 것처럼 Imagick 사용에 이런저런 애로사항이 있는지라...
  • 2023.07.03 06:18 #1772208

    과거 1.6 버전에서는 그런 기능이 있었습니다.

    이미지프로세스 모듈에서 프레세싱할때 미리 exif를 DB에 저장하고 애드온에서 뽑아서 보여주는 기능이었습니다.

     

    문제는 

    1. 이미지프로세스의 거의 모든 기능이 코어에서 지원을 하고 있습니다.

        일부 몇가지 특별한 기능은 아마 수요가 거의 없을 것같습니다.

    2. EXIF 데이터를 추출하는 기능은 imagick extension을 사용할때 가능한 기능인데

        php8.0에서 겨우 동작하기는 하지만 PHP 7.X에서는 메모리누수가 너무 심해서 거의 작동이 불가능합니다.

       

    해서 php_exif 2.0에서는 제거했습니다.

     

    궂이 사용을 하시겠다면 1.6X버전을 받아서 수정해서 사용하셔야할겁니다.

  • 2023.07.03 06:44 #1772212
    before 트리거에서 exif를 미리 추출하여 DB에 저장해 두고, 실제 파일에서는 exif가 날라가든 말든 신경쓰지 말고 GD나 ImageMagick으로 변환해 버리고, DB에 있는 exif 데이터만 보여주는 방식으로 한다면 어떨까요?

    파일에서는 exif를 날리고 DB에 별도 저장해 둔 데이터 중 사이트에서 필요한 것만 활용한다면, GPS 좌표나 썸네일 등 민감한 정보가 노출될 위험도 줄일 수 있을 것 같습니다.
  • 2023.07.03 08:25 #1772219
    그것도 좋은 방법일 것 같습니다.
    이미지프로세스 모듈에서만 생각하고 있었네요...ㅎㅎ
    애드온에서 화일 업로드시 미리 추출하고 저장한 다음 신경 끄는 것이 좋을 듯합니다.

    그런데 애드온에서 테이블 생성이 가능할까요?
    테이블 생성만 가능하다면 애드온 단독으로도 가능할 것같습니다.
  • 2023.07.03 08:38 #1772227

    스키마 xml 파일만 있으면 어떻게든 강제로 생성할 수는 있는데,
    테이블 생성이 필요할 정도라면 그냥 모듈로 전환하시는 것을 추천합니다.
    모듈 생성기를 사용해서 기본 구조 다 잡힌 모듈 뼈대를 가져와서 필요한 트리거를 추가한 후,
    애드온 코드를 그대로 이식하면 되니까요.

    라이믹스 입장에서 모든 애드온은 언젠가 퇴출 대상이라고 보고 있습니다.^^

    모듈 개발을 애드온처럼 쉽게 만드는 것이 목표입니다.