Tip & Tech

활용팁

홈 > 회원포럼 > 활용팁
활용팁

gif 움짤 첫프레임 저용량 썸네일 만들기 완성본입니다.

오랫만에 사이트 개발을 시작하면서 아미나 최신버전 1.7.20 파일 기준으로 수정하였고 썸네일 생성도 잘되네요.


해당 기능을 사용하기 위해서는 3개 파일을 수정하셔야합니다
/bbs/write_update.php  // is_animated_gif 관련 주석처리
/lib/apms.lib.php      // is_animated_gif 관련 주석처리
/lib/thumbnail.lib.php // gif ani 첫프레임 추출


첨부파일은 아미나 1.7.20 기준으로 수정된 파일입니다.
정확한 경로에 해당 파일을 업로드하시면 됩니다.
또한 기존 운영하시고 계시다면 아래처럼 해당 파일을 수정하시면 됩니다.

게시판 본문에서 gif파일이 썸네일로 불러올 경우 게시판 설정에서 본문 이미지 사이즈를 조정해주셔야 합니다.
위젯등에서 썸네일 생성이 되지않는 경우 썸네일 이미지 width height 값을 지정해주시면 됩니다.


/lib/thumbnail.lib.php // gif ani 첫프레임 추출

특별히 업데이트되는 파일이 아니기 때문에 덮어쓰기 하시면 될 것 같습니다.
490 ~ 520 라인

    // Animated GIF는 썸네일 생성하지 않음
/*
    if($size[2] == 1) {
        if(is_animated_gif($source_file))
            return basename($source_file);
    }
*/
    $ext = array(1 => 'gif', 2 => 'jpg', 3 => 'png');
    $thumb_filename = preg_replace("/\.[^\.]+$/i", "", $filename); // 확장자제거
    $thumb_file = "$target_path/thumb-{$thumb_filename}_{$thumb_width}x{$thumb_height}.".$ext[$size[2]];
    $thumb_time = @filemtime($thumb_file);
    $source_time = @filemtime($source_file);
    if (is_file($thumb_file)) {
        if ($is_create == false && $source_time < $thumb_time) {
            return basename($thumb_file);
        }
    }
    // 원본파일의 GD 이미지 생성
    $src = null;
    $degree = 0;
    if ($size[2] == 1) {
        if(is_animated_gif($source_file)){
            $giftmp = file_get_contents($source_file, NULL, NULL, 0, 1024 * 200);
            list($gifhead,$gifdata) = preg_split("/\x21\xff\x0b/",$giftmp,2);
            $gifdata = substr($gifdata,10,strlen($gifdata));
            $gifframes = explode("\x00\x21\xf9\x04",$gifdata);
            $giffirst = ( strlen($gifframes[0]) < 2048 ) ? 1 : 0;
            $giffirstframe =  $gifhead . "\x21\xf9\x04". $gifframes[$giffirst] . "\x00\x3b";
            $src = @imagecreatefromstring($giffirstframe);
        }else{
             $src = @imagecreatefromgif($source_file);
        }
        $src_transparency = @imagecolortransparent($src);
    } else if ($size[2] == 2) {


/lib/apms.lib.php
2359라인 아래처럼 주석처리

  // 썸네일 생성
//  if(!$is_animated) {
   $thumb_file = thumbnail($filename, $filepath, $filepath, $thumb_width, $thumb_height, $is_create, $is_crop, $crop_mode, $is_sharpen, $um_value);
   $is_thumb = true;
//  } else {
//   $thumb_file = $filename;
//   $is_thumb = false;
//  }

/bbs/write_update.php
892라인 아래처럼 주석처리


//             Animated GIF 체크
            $is_animated = false;
//            if($size[2] == 1) {
//                $is_animated = is_animated_gif($srcfile);
//            }
//   if($is_animated)
//                continue;

14 Comments
8 Darcy 2017.12.08 22:27  
감사합니다
4 박다솜 2017.12.09 03:35  
댓글내용 확인
8 키키2 2017.12.09 09:14  
댓글내용 확인
4 박다솜 2017.12.09 15:53  
댓글내용 확인
8 키키2 2017.12.09 17:46  
댓글내용 확인
4 박다솜 2017.12.09 22:44  
댓글내용 확인
9 너무느린신 2017.12.09 06:50  
/bbs/apms.lib.php    <----  여기위치가????
2359라인 아래처럼 주석처리 


아래부분을 잘못 쓰신것은 아닌자요?
/lib/apms.lib.php
8 키키2 2017.12.09 08:42  
/lib/apms.lib.php 가 맞아요
제가 잘못 작성했네요 ^^
16 사노라면 2017.12.09 09:02  
감사합니다
5 후니라이프 2017.12.09 23:24  
이거 사용하면 어떤효과가 있는건지요?

그냥 gif 움짤 용량을 줄여주는거에요? 아니면 gif 를 안움직이는 이미지로 만들어주는거에요?

Congratulation! You win the 45 Lucky Point!

8 키키2 2017.12.10 00:09  
썸네일로 사용되는 이미지만 안움직이는 이미지로 만드는 겁니다.
5 후니라이프 2017.12.10 05:46  
음 적용을 잘못했나 ㅋㅋ 그대로 움직이네요
1 jedi 2017.12.28 22:46  
음.. 외부 이미지는 어떻게 되나요?
8 키키™ 2017.12.29 00:23  
게시판 설정에서 외부이미지를 서버에 저장을 선택하셔야 썸네일이 만들어져요.
제목
최근 글
최근 댓글
Facebook Twitter GooglePlus KakaoStory NaverBand