이미지 업로드시 사이즈 변경 > 그누보드5 팁자료실

그누보드5 팁자료실

이미지 업로드시 사이즈 변경 정보

이미지 업로드시 사이즈 변경

본문

게시판에서 큰 이미지를 업로드시 사이즈 변경입니다
용량으로 막자니 사이즈 줄여서 못올리시는 분들도 간혹 계시고
호스팅 사용시 용량을 생각해 원본 파일을 줄여서 저장합니다.
plugin 을 활용하였습니다.

1. https://github.com/eventviva/php-image-resize 서 플러그인을 다운 받고 압축을 풉니다.

2. plugin 폴더안에  php-image-resize-master 을 넣습니다.

3. skin 폴더에 write_update.head.skin.php 파일을 만드시고  아래 내용을 입력합니다

<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가

include G5_PLUGIN_PATH."/php-image-resize-master/lib/ImageResize.php";//플러그인 경로를 확인하세요

$width= 900; //너비 px
$height= 900;//높이 px
$quality =90; //선명도 %

use \Eventviva\ImageResize;

for ($i=0; $i<count($_FILES['bf_file']['name']); $i++) {
    //이미지 내용 확인
  $tmp_file  = $_FILES['bf_file']['tmp_name'][$i];
    $filename  = $_FILES['bf_file']['name'][$i];
   
//이미지 확장자 검사
if($filename && preg_match("/\.({$config['cf_image_extension']})$/i", $filename)){
// image type 검사
$timg = @getimagesize($tmp_file);
if ($timg['2'] < 1 || $timg['2'] > 16){
continue;
}
//이미지 변경
$image = new ImageResize($tmp_file);
$image->resizeToBestFit($width, $height);
$image->save($tmp_file, null, $quality);
                $_FILES['bf_file']['size'][$i]=filesize($tmp_file);
unset($image);

}
}
?>

 

다른 기능 추가는 https://github.com/eventviva/php-image-resize 에서 보시고 처리 하셔도 됩니다.
좋은 하루 되세요~~
추천
9

댓글 37개

네 잘 작동 합니다
혹 기본 스킨이 아니시면 write.skin.php 에서
POST로 넘어온 토큰과 세션에 저장된 토큰 비교 가 문제가 있을수 있습니다.
좋은자료 감사합니다.
재미난 현상이 발견되어 레포팅합니다.

가로 1000 x 세로 8192  임의의 이미지를 생성후 업로드시 사이즈 변환

$width  = 900;  // 너비 px
$height  = 8192; // 높이 px (포토샵에서 지원하는 최대 높이값)
$quality = 90;  // 선명도 %

사이즈 :  원본 1000 x 8192  ->  업로드  900 x 7,317 px
JPG  원본      501,574  ->  업로드    232,347 byte
PNG  원본  1,340,635   -> 업로드  1,753,153 byte

JPG 와 PNG의 태생적 차이때문인지 모르지만 용량이 저렇게 변하네요 ^^
알려주셔서 감사합니다. 간만에 공부좀 했습니다.
png 경우는 이미지 퀄리티는 보장이 된다고 합니다
jpg 는 같은경우 처리가되면 선명도가 조금씩 떨어진다고 합니다.
png 같은경우 한번더 처리하면 70% 까지 압축이 가능하가도 합니다.
한가지 추가합니다.  이 플러그인을 사용하기 위해서는 PHP 5.3 이상 설치되어야 합니다.
namespace 라는 핵심 기능이 PHP 5.3 에서 추가되었네요.
http://jp2.php.net/manual/kr/language.namespaces.rationale.php
http://www.haruair.com/blog/2843
아...정말 필요해서 적용해봤는데 글쓰기페이지에서 확인을 누르면 흰화면에서 넘어가질 않네요...
최신 버전에 적용해도 되는건가요?
실제 적용하기 앞서 플러그인이 웹호스팅 계정에서 사용 가능한지 확인합니다.
http://도메인/plugin/php-image-resize-master/lib/ImageResize.php  이렇게 브라우저에 주소를 입력해봅니다.
Parse error: syntax error, unexpected T_STRING in /home/..../plugin/php-image-resize-master/lib/ImageResize.php on line 3
이렇게 에러가 발생한다면 사용할 수 없습니다.
이 플러그인은 php 5.3 이상 설치된 서버에서만 사용 가능합니다.
php7에서는 안되는 건가요? ㅠ,.ㅠ 테스트 해보니 사이즈가 그대로 입니다.
아 이것 꼭 적용하고 싶은데 도무지 어디서 잘못 됐는지 모르겟네요..ㅠ,.ㅠ
skin 폴더에 write_update.head.skin.php 작성해서 저장하면 글쓰면 자동으로 리사이징 되는건가요??
따로 write_update.head.skin.php 파일을 실행하도록 설정은 필요 없는 건가요???
첨부파일로된 이미지는 축소가 되는데, 에디터에서 사진으로 올린건 축소가 안되네요... 에디터에서 올린 이미지를 축소하는 방법 알려주시면 감사하겠습니다.
위에 있는 글중에 use \Eventviva\ImageResize;  이부분을
use \Gumlet\ImageResize; 이것으로 바꾸세요... ==> 필요합니다.

플러그인에 위 파일을 전체 넣고,

write_update.head.skin.php 파일을 생성하여(새로 만들어서)
skin > basic 폴더에 넣어야 합니다.

2022년 9월. 잘 작동합니다.
모바일에서도 작동합니다.

감사드립니다.

감사합니다. 회원이 모바일에서 7m파일을 10개 올리길래 적용했더니 용량 팍 줄어드네요. 전 800*800 퀼리티80%으로 했습니다. 서버용량 최대한 오래써야되서요. 

전체 2,528 |RSS
그누보드5 팁자료실 내용 검색

회원로그인

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