물어보기XpressEngine

예전에는 이런현상을 발견하지 못했는데 오늘 우연히 gif 이미지를 설정된 사이즈로 리사이즈 하는 과정에서 오히려 이미지용량이 7배 정도 늘어나는 것을 확인했습니다. 3메가 짜리가 26메가로 변하더군요,.

 

혹시 이미지매직의 리사이즈방식을 이미지프로세서모듈에서 관여하는 것인가요? 이러한 문제가 있다면 이미지프로세서모듈에서 수정을 해야 하는건지 궁금합니다.

 

사이즈는 분명 설정된 사이즈로 줄지만 레이어를 다시 만들때 뭔가 더 용량이 커지는 방식으로 다시 조립되는 것 같은데요.

 

혹시 이런 문제 발견하시고 해결하신 분 있나요 ?

 

일단 우선 GD로 변경해 놓은 상태입니다.

  • profile
    기진곰 2017.09.21 19:47:57

    GD는 움짤을 리사이즈하면 첫 프레임밖에 안 남을 텐데요.

     

    이미지매직에서 GIF를 어떻게 처리하는지는 모르겠습니다만, JPG도 화질을 지나치게 높게 설정해 놓으면 리사이즈 후 용량이 오히려 커지는 일을 종종 봅니다.

     

    그런데 혹시 원본이 GIF로 위장한 일반 동영상 파일(예: mp4)은 아니었겠지요? 80년대에 만들어진 GIF보다 요즘 동영상 포맷들의 압축률이 훨씬 좋기 때문에 imgur 같은 곳에서도 트래픽 절약을 위해 GIF를 동영상으로 바꿔서 보여주곤 하거든요. 다시 GIF로 바꾸면 당연히 용량이 몇 배나 커지고요. 만약 이런 파일을 GIF인 척 올렸다면...?

  • profile
    웹지기 2017.09.21 19:52:10
    GD는 리사이즈하면 애니메이션 제거해요.
    제가 영상을 웹에서 gif로 변환해서 3.5메가로 만든건데요. 이게 업로드 되면서 한 5분 걸립니다. 26메가로 됩니다 ㅜㅡ
  • profile
    YJSoft 2017.09.21 21:27:21

    같은 프레임 스킵(동일 프레임이 반복되는 경우 계속 프레임을 넣기보다는 딜레이를 넣습니다) 등 최적화가 된 gif 파일을 변환하는 경우 최적화된 것이 사라지면서 용량이 늘어나는 경우가 있습니다. 대표적으로 http://blog.bahraniapps.com/gifcam/ gifcam을 사용해 만들어진 gif의 경우 각종 최적화 기법이 적용되어 있기에 변환시 최적화한 것이 사라지면서 용량이 늘어나게 됩니다.

  • profile
    웹지기 2017.09.21 21:39:30
    그럼 영상을 gif로 만들어준 사이트에서는 최적화를 해서 만들어준건데 이미지매직에서 크기를 줄이면서 해체 후 다시 조립 시 최적화 하지 않아 프레임이 늘어나면서 용량이 크게 늘고 컨버팅 시간이 오래 걸린 것이겠군요.

    이런 이미지를 리사이즈가 하는 경우 사이트가 멈춘 듯한 상황에 처할텐데 이미지매직을 계속 쓰기 부담스러운 경험을 했네요.
  • profile
    socialskyo 2017.09.21 21:47:46

    이거 큰일이네요. 

  • profile
    웹지기 2017.09.21 21:51:55

    혹시 모든 gif가 다 그런가요?
    저는 제가 영상 컨버팅 한것만 테스트해봐서요.

    이전에는 이런 경우가 전혀 없었는데 오늘 발견했는데 뭔가 이상하기만 해요.

  • profile
    socialskyo 2017.09.21 21:58:15
    네. 저도 영상 컨버팅 그거요. 그래서 추측컨데..." 최적화가 된 gif 파일을 변환하는 경우" 가 아닐까... 생각 중입니다.

    최적화가 된 경우가 뭔지 미리 알수 없을것 같아..고민입니다.
  • profile
    웹지기 2017.09.21 22:00:39
    다른 큰 이미지로 테스 해보셨어요? 영상컨버팅이아닌 움짤 큰거로.. 그거는 괜찮다면 위에 댓글 달린 이유가 맞는거 같고 이미지매직 쓰긴 부담스러울 거 같아요. 저희는 일단 GD로 전환해서 이런 이미지 영향을 받지 않게 해 놓았어요.
  • profile
    기진곰 2017.09.21 22:03:04
    최적화된 GIF가 맞는 것 같네요. 위에 @YJSoft 님이 링크해 주신 사이트에서 예제로 나오는 곰돌이 푸 GIF를 다운받아 이미지매직으로 돌려보니 시간도 한참 걸리고 용량이 3배나 커졌습니다.
  • profile
    socialskyo 2017.09.21 22:05:11

    흠...신기하네요. 우연히도... 곰돌이 이미지......

  • profile
    웹지기 2017.09.21 22:33:15
    사이트 모바일쪽에 문제가 있네요. 글 읽는 페이지에서 스크립트 충돌 있는듯 해요. 메뉴버튼 안눌리고 h1 자리에 글자가 겹쳐있네요.
  • profile
    웹지기 2017.09.21 22:09:06
    아이고... 회원들도 이런 저런 gif를 업로드 하게 될텐데 그냥 속 편하게 GD로 해서 불편을 주는 케이스를 피해가야 겠네요... 업로드 시도하고 서버 먹통이 오래 지속되니 아마 글쓰기 포기할 듯 해요.
  • profile
    socialskyo 2017.09.21 22:33:03
    저도 먹통 되었었네요. 휴... 것도 모르고 동시에 다른 서버 업데이트까지 하느라
  • profile
    socialskyo 2017.09.21 22:35:04
    그나저나 gd 로 하니까 움직이는 이미지가 날라가네요..쩝.
  • profile
    웹지기 2017.09.21 22:36:32
    네. GD는 움짤 없애죠. 사실 이미지매직 쓴게 움짤 살릴려고 사용한건데 이런 이미지 예외처리 못하면 사용하기 어렵죠.
  • profile
    socialskyo 2017.09.21 22:37:08
    그러네요. 쩝..
  • profile
    웹지기 2017.09.21 22:38:10
    오토멘션 모바일쪽 js에서 에러나요. 아마 CK에디터 자동감지되면서 동작하는 부분에서 오류 생긴것 같아요.
  • profile
    기진곰 2017.09.21 22:17:41

    이미지매직을 사용해서 GIF 프레임 수 및 최적화 여부를 확인하는 방법을 찾아냈습니다.

     

    1. 프레임 수 확인

    $frames = trim(shell_exec('identify ' . escapeshellarg($filename) . ' | wc -l'));

    결과값 $frames가 1보다 크면 움직이는 GIF입니다. 50~100을 넘어간다면 상당히 복잡한 동영상이겠지요.

     

    2. 최적화 여부 확인

    $optimized = trim(shell_exec('identify -format "%wx%h%O\n" ' . escapeshellarg($filename) . ' | sort | uniq | wc -l'));

    결과값 $optimized가 1보다 크면 프레임마다 크기가 다른 (프레임마다 화면 전체를 저장하지 않고 그때그때 필요한 부분만 갱신하도록 만들어진) GIF입니다. 프레임 크기를 달리하는 것이 가장 효과적인 최적화 방법이기 때문에 아마 이것만으로도 꽤 많이 걸러낼 수 있을 것 같네요.

     

    파일 용량, 프레임 수, 최적화 여부 등을 기준으로 일정 기준을 넘어가면 리사이즈를 시도하지 않도록 해야겠습니다. 문제의 파일로 테스트해 보세요. 파일명을 $filename에 넣으면 됩니다.

     

    이미지매직이 설치된 서버라면 identify 명령은 대개 convert 명령과 같은 경로에 있습니다. (예: /usr/bin/identify)

  • profile
    웹지기 2017.09.21 22:20:50
    이미지프로세서 모듈에 반영되어야 할 것 같기도 하네요.
  • profile
    웹지기 2017.09.22 17:00:53
    일단 이미지프로세스모듈 개발자님께 해당 사실을 전달해 드렸고 확인 하셨으니 시간이 되시면 나중에 검토가 될 수도 있을 것 같습니다.

서버에 요청 중입니다. 잠시만 기다려 주십시오...