그누보드의 게시판에 첨부파일 등록시 이미지파일을 업로드 하게되면

원본파일은 그대로 저장하고 썸네일을 생성하여 상세페이지 등 에서 보이도록 되어있습니다.

 

원본파일이 너무 크다면 서버용량도 금방 가득 차버립니다.

그래서 이번에는 게시판에 이미지 등록시 해당 이미지의 원본을 리사이징하여

용량을 작게해서 서버에 원본파일로 저장시키는 방법을 살펴보겠습니다.

 

해당스킨경로/write_update.skin.php 파일을 하나 생성하여

아래의 소스코드를 그대로 붙혀넣으시면 바로 적용이 되겠습니다.

 

<?

/* 해당스킨경로/write_update.skin.php */

 

if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

 

////////////////////////////////////////// ////////////// 게시판 이미지 첨부시 파일 리사이징

$sql2=" select * from $g5[board_file_table] where  bo_table = '$bo_table' and wr_id = '$wr_id' order by bf_no asc";

$results2 = sql_query($sql2);

 

for ($d=0; $row2=sql_fetch_array($results2); $d++)  {

    echo resize_image($d,$row2,$bo_table,$wr_id);

}

 

//////////////////////////////////////////////////////// 게시판 이미지 첨부시 파일 리사이징 끝

 

function resize_image($d,$row2,$bo_table,$wr_id)

{

    global $g5;

 

    if ($_FILES['bf_file']['name'][$d]) {

 

        $img_limit_width = 660; // 제한할 이미지 폭

        $img_quality = 70; // 이미지 품질

 

        $data_path = G5_DATA_PATH."/file/$bo_table";

 

        $file = $data_path .'/'. $row2['bf_file'];

        if (preg_match("/\.(jp[e]?g|gif|png)$/i", $file)) {

            $size = getimagesize($file);

            if ($size[2] == 1){

                $src = imagecreatefromgif($file);

//echo "1222";

}

            else if ($size[2] == 2){

                $src = imagecreatefromjpeg($file);

//echo "2222";

}

            else if ($size[2] == 3){

                $src = imagecreatefrompng($file);

//echo "3222";

}

 

            $rate = $img_limit_width / $size[0];

            $height = (int)($size[1] * $rate);

 

            if ($size[0] > $img_limit_width){

 

                @unlink($data_path.'/'.$row2['bf_file']);

                $dst = imagecreatetruecolor($img_limit_width, $height);

                imagecopyresampled($dst, $src, 0, 0, 0, 0, $img_limit_width, $height, $size[0], $size[1]);

                imagejpeg($dst, $data_path.'/'.$row2['bf_file'], $img_quality);

                chmod($data_path.'/'.$row2['bf_file'], 0606);

                $bf_size = @filesize(addslashes($file));

 

                $sql = " update $g5[board_file_table] 

set bf_filesize = '$bf_size' 

where  bo_table = '$bo_table' and wr_id = '$wr_id'  ";

 

                sql_query($sql);

            }

        }

    }

    return $sql;

}

?>

 

테스트로 내문서에 있는 기본 사진 코알라를 올려보았습니다.

8c9ad47cdeac43531e017e1c1caa1ac6_1498701510_6018.png
아래와 같이 소스코드를 적용 하였을때와 아닐때의 용량 차이가 확연히 보입니다. 

8c9ad47cdeac43531e017e1c1caa1ac6_1498701466_2418.png
 

추천 0 비추천 0
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기
  • 밴드 보내기
  • 블로그 보내기
  • 폴라 보내기
  • 카카오스토리 보내기
  • 텔레그램 보내기
  • 텀블러 보내기
댓글 2
  • 레이엔 ()

    $g5;-> $g4;로 바꿔서 그누4에서는 사용안되는건가요?

  • 댓글의 댓글 그누위즈 ()

    수정해서 만들면 사용이 가능하긴 합니다.
    다만 그누위즈에서는 그누보드5, 영카트5 관련 자료만 제공하고있습니다.
    감사합니다.

게시판

RSS
번호 제목 글쓴이 날짜 추천 비추천
상단으로