불당썸을 이용하여 업로드시 이미지 용량 줄이기 > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

불당썸을 이용하여 업로드시 이미지 용량 줄이기 정보

불당썸을 이용하여 업로드시 이미지 용량 줄이기

본문

불당썸을 이용하여 업로드시 이미지 용량을 줄여 업로드 하는 방법입니다.

원리는 간단합니다.

1. 글을 등록후 등록된 글에 대한 이미지(첨부 & 에디트 삽입 이미지, 링크 이미지 제외) 파악

2. 이미지가 있으면, 이미지 주소를 가져와 지정한 크기보다 크면 불당썸으로 썸네일 생성

3. 생성한 썸네일을 원본이미지로 복사(원본이미지 썸네일 이미지로 변경됨)

4. 복사후 생성한 썸네일 삭제..끝

적용방법은 아래 코드를 스킨 내 write_update.tail.skin.php 에 넣어 주시면 됩니다.
(참고로 스킨 내에 파일이 없으면 만들어 주시면 됩니다.)

//-----------------------------------------------------
/* 불당썸을 이용하여 업로드시 이미지 용량 줄이기 */
/* jpg, gif, png 이미지 파일만 지원 - 움직이는 gif 와 bmp는 제외 */

//이미지 최대 폭(px) 지정 - 이 크기를 넘어가면 리사이즈함
$upimg_size = "1024";

//리사이즈 이미지 퀄리티
$upimg_quality = "90";

//----------------------------------------------------

$img = array();

//첨부파일 불러오기
$attach = get_file($bo_table, $wr_id);

//직접 첨부한 이미지 파악하기
for ($k=0; $k<count($attach); $k++) {
    if ($attach[$k][view]) {
          $attach_img[$k] = $attach[$k][path]."/".$attach[$k][file];
          if(preg_match("/\.(jpg|gif|png)$/i", $attach_img[$k]) && file_exists($attach_img[$k])) {
              $img[] = $attach_img[$k];
          }
    }
}

//에디터에 삽입된 이미지 파악하기
if(preg_match_all("/<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>/i", $wr_content, $match)) {
    for ($k=0; $k<count($match[0]); $k++) {
          if(preg_match('/data\/cheditor4\/[^<>]*\/[^<>]*\.(jpg|gif|png)/', $match[0][$k], $tmp_img)) {
              list($org_img) = explode("\"",$tmp_img[0]);
              if(file_exists($g4[path]."/".$org_img)){
                    $img[] = $g4[path]."/".$org_img;
              }
          }
    }
}

if(count($img) > 0) {

    // 불당썸 불러오기
    @include_once($g4[path]."/lib/thumb.lib.php");

    for ($i=0; $i<count($img); $i++) {
          if(file_exists($img[$i])) {
              $size = @getimagesize($img[$i]);

              // 이미지 파일이 아니거나 폭이 같거나 작은 경우 통과
              if (!$size[0] || $size[0] <= $upimg_size) continue;

              // animated gif의 경우 통과
              if($size[2] == IMG_GIF && is_animated_gif($img[$i])) continue;

              $thumb = thumbnail($img[$i], $upimg_size, 0, false, "", $upimg_quality);
              if($thumb) {
                    copy($thumb, $img[$i]);
                    chmod($img[$i], 0606);
                    @unlink($thumb);
              }
          }
    }
}

p.s : 1. 원본보관후 대체도 가능하지만 용량 확보가 목적이라 그 부분은 뺐습니다.

        2. 불당썸 워터마크 기능을 이용하면 업로드시 워터마크도 미리 다 넣어 줄 수 있습니다.
추천
7

댓글 8개

PHP 메모리 제한때문일 수 있습니다. thumbnail 함수 호출하기 전에..

ini_set('memory_limit', '200M');

이런식으로 메모리 제한을 올려보세요
전체 3,313 |RSS
그누4 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT