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;

16 Comments
6 킹망고 05.27 23:50  
외부이미지 서버저장까지 했는데도 그대로 움직이네요...
어디 잘못적용된건지.
제목
최근 글
최근 댓글
Facebook Twitter GooglePlus KakaoStory KakaoTalk NaverBand