그누보드 [G5] 이미지 업로드시 사이즈 변경 (리사이징) - TYPE1
페이지 정보
본문
게시판에서 큰 이미지를 업로드시 사이즈(크기) 변경입니다
plugin 을 활용합니다.
1. https://github.com/eventviva/php-image-resize 서 플러그인을 다운 받고 압축을 풉니다.
2. 그누보드5 / plugin / 에 폴더를 생성후 파일업로드
└ php-image-resize-master
├ ImageResize.php
└ ImageResizeException.php
3. 적용 테스트
실제 적용하기 앞서 플러그인이 웹호스팅 계정에서 사용 가능한지 확인합니다.
http://도메인/plugin/php-image-resize-master/lib/ImageResize.php 이렇게 브라우저에 주소를 입력해봅니다.
Parse error: syntax error, unexpected T_STRING in /home/happyjung/www/plugin/php-image-resize-master/lib/ImageResize.php on line 3
이렇게 에러가 발생한다면 사용할 수 없습니다.
이 플러그인은 php 5.3 이상 설치된 서버에서만 사용 가능합니다.
4. 그누보드5 / skin / board / basic / write_update.head.skin.php 파일을 만드시고 아래 내용을 입력합니다
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
include G5_PLUGIN_PATH."/php-image-resize-master/ImageResize.php";//플러그인 경로를 확인하세요
$width = 900; // 너비 px
$height = 8192; // 높이 px (포토샵에서 지원하는 최대 높이값)
$quality = 90; // 선명도 %
//use \Eventviva\ImageResize;
use \Gumlet\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 || $timg['2'] == 17 || $timg['2'] > 18) { // WebP 추가
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);
}
}
사례
가로 1000 x 세로 8192 임의의 이미지를 생성후 업로드시 사이즈 변환
사이즈 : 원본 1000 x 8192 -> 업로드 900 x 7,317 px
JPG : 원본 501,574 -> 업로드 232,347 byte
PNG : 원본 1,340,635 -> 업로드 1,753,153 byte
JPG 와 PNG의 태생적 차이때문인지 모르지만 용량이 저렇게 변하네요 ^^
참고자료
https://sir.kr/g5_tip/5910
plugin 을 활용합니다.
1. https://github.com/eventviva/php-image-resize 서 플러그인을 다운 받고 압축을 풉니다.
2. 그누보드5 / plugin / 에 폴더를 생성후 파일업로드
└ php-image-resize-master
├ ImageResize.php
└ ImageResizeException.php
3. 적용 테스트
실제 적용하기 앞서 플러그인이 웹호스팅 계정에서 사용 가능한지 확인합니다.
http://도메인/plugin/php-image-resize-master/lib/ImageResize.php 이렇게 브라우저에 주소를 입력해봅니다.
Parse error: syntax error, unexpected T_STRING in /home/happyjung/www/plugin/php-image-resize-master/lib/ImageResize.php on line 3
이렇게 에러가 발생한다면 사용할 수 없습니다.
이 플러그인은 php 5.3 이상 설치된 서버에서만 사용 가능합니다.
4. 그누보드5 / skin / board / basic / write_update.head.skin.php 파일을 만드시고 아래 내용을 입력합니다
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
include G5_PLUGIN_PATH."/php-image-resize-master/ImageResize.php";//플러그인 경로를 확인하세요
$width = 900; // 너비 px
$height = 8192; // 높이 px (포토샵에서 지원하는 최대 높이값)
$quality = 90; // 선명도 %
//use \Eventviva\ImageResize;
use \Gumlet\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 || $timg['2'] == 17 || $timg['2'] > 18) { // WebP 추가
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);
}
}
사례
가로 1000 x 세로 8192 임의의 이미지를 생성후 업로드시 사이즈 변환
사이즈 : 원본 1000 x 8192 -> 업로드 900 x 7,317 px
JPG : 원본 501,574 -> 업로드 232,347 byte
PNG : 원본 1,340,635 -> 업로드 1,753,153 byte
JPG 와 PNG의 태생적 차이때문인지 모르지만 용량이 저렇게 변하네요 ^^
참고자료
https://sir.kr/g5_tip/5910