[G5] 이미지 업로드시 사이즈 변경 (리사이징) - TYPE2 > 기술자료 | 해피정닷컴

[G5] 이미지 업로드시 사이즈 변경 (리사이징) - TYPE2 > 기술자료

본문 바로가기

사이트 내 전체검색

[G5] 이미지 업로드시 사이즈 변경 (리사이징) - TYPE2 > 기술자료

그누보드 [G5] 이미지 업로드시 사이즈 변경 (리사이징) - TYPE2

페이지 정보


본문

요즘 스마트폰에서 이미지 촬영후 바로 업로드하는 경우가 빈번한데요.
이경우 5000픽셀 이상이고 용량도 3~8MB 크기가 업로드되서 관리에 무척 곤란함을 느낄수 있습니다
이럴때 이미지를 자동으로 관리하는 방법입니다
원본파일이 삭제되고 사이즈 변경된 이미지만 서버에 남기는 방법이므로, 원본 고해상도가 필요한 경우에는 적용하면 안됩니다.


자료원본 : https://sir.kr/g5_plugin/6165



5.4.0.2 버전 이상에서 작동됩니다.

1. 게시판 이미지 폭 크기
게시판에 이미지 파일 첨부시 JPG, PNG 파일은 이미지 width 가 게시판 설정된 width 값 보다 크다면,
원본 파일은 삭제되고 게시판 설정된 width 값으로 썸네일 이미지로 대체 됩니다.




2. 에디터
SmartEditor ... CUSTOM_EDITOR_RESIZE_WIDTH 상수 코드의 width값에 의해 변경된 이미지가 저장됩니다
그외 에디터는 아직 자동 이미지 변경이 안됩니다
CKEditor 등 준비되면 내용을 업데이트 하겠습니다


3. extend / file_upload_size.extend.php 파일을 생성해서 아래 내용을 업로드 합니다
<?php
if (!defined('_GNUBOARD_')) exit; // Unable to access direct pages
//return;
// 작성 : thisgun ( https://sir.kr/g5_plugin/6165 )
// 수정 : 해피정닷컴 ( https://www.happyjung.com/lecture/3017 )

// 게시판의 경우 게시판 설정에서 이미지 폭 크기 값으로 resize 됩니다.
define('CUSTOM_EDITOR_RESIZE_WIDTH', 1200); // SmartEditor(스마트에디터)에서 업로드된 이미지 폭의 값을 설정

add_replace('write_update_upload_file', 'custom_upload_file_resize', 10, 4);
add_replace('get_editor_upload_url', 'custom_editor_upload_url', 10, 3);

// bbs/view_image.php 에서 이미지를 호출시 위의 상수값 CUSTOM_EDITOR_RESIZE_WIDTH 보다 이미지 width 값이 크다면 CUSTOM_EDITOR_RESIZE_WIDTH 으로 파일을 리사이즈 합니다.
add_replace('get_view_imagesize', 'custom_get_view_imagesize', 10, 3);

function custom_get_view_imagesize($size, $filepath, $editor_file){
    if( isset($size[0]) && (int) $size[0] > CUSTOM_EDITOR_RESIZE_WIDTH ){
        $filepath = custom_imagefile_resize($filepath, CUSTOM_EDITOR_RESIZE_WIDTH);
        $size = @getimagesize($filepath);
    }
    return $size;
}

function custom_imagefile_resize($dest_file, $thumb_width=0){
    include_once(G5_LIB_PATH.'/thumbnail.lib.php');

    $size = @getimagesize($dest_file);
    if(empty($size))
        return $dest_file;

    if(in_array($size[2], array(IMAGETYPE_JPEG, IMAGETYPE_PNG))) {

        if(function_exists('exif_read_data')) {
            // exif 정보를 기준으로 회전각도 구함
            $exif = @exif_read_data($dest_file);
            $degree = 0;
            if(!empty($exif['Orientation'])) {
                switch($exif['Orientation']) {
                    case 8:
                        $degree = 90;
                        break;
                    case 3:
                        $degree = 180;
                        break;
                    case 6:
                        $degree = -90;
                        break;
                }

                // 회전각도를 구한다.
                if($degree) {
                    // 세로사진의 경우 가로, 세로 값 바꿈
                    if($degree == 90 || $degree == -90) {
                        $tmp = $size;
                        $size[0] = $tmp[1];
                        $size[1] = $tmp[0];
                    }
                }
            }
        }

        // 원본 width가 thumb_width보다 작다면
        if($size[0] <= $thumb_width)
            return $dest_file;
        
        $thumb_height = ceil($thumb_width * $size[1] / $size[0]);
        $path_parts = pathinfo($dest_file);
        
        if( $path_parts['dirname'] ){
            $thumb = thumbnail($path_parts['basename'], $path_parts['dirname'], $path_parts['dirname'], $thumb_width, $thumb_height, true, true);

            if($thumb) {
                @unlink($dest_file);
                rename($path_parts['dirname'].'/'.$thumb, $dest_file);
            }
        }
    }
    return $dest_file;
}

function custom_editor_upload_url($fileurl, $filepath, $args=array()){
    global $config;

    if( $config['cf_editor'] === 'smarteditor2' && (defined('SMARTEDITOR_UPLOAD_RESIZE') && SMARTEDITOR_UPLOAD_RESIZE) ){
        return $fileurl;
    }

    if ( file_exists($filepath) && defined('CUSTOM_EDITOR_RESIZE_WIDTH') && CUSTOM_EDITOR_RESIZE_WIDTH ){
        $thumb_width = CUSTOM_EDITOR_RESIZE_WIDTH;
        $filepath = custom_imagefile_resize($filepath, $thumb_width); 
    }
    return $fileurl;
}

function custom_upload_file_resize($dest_file, $board, $wr_id, $w){
    if( file_exists($dest_file) && $board['bo_image_width'] ){
        // 게시판 관리자에서 설정된 width 값
        $thumb_width = $board['bo_image_width'];
        $dest_file = custom_imagefile_resize($dest_file, $thumb_width);
    }
    return $dest_file;
}

댓글목록

등록된 댓글이 없습니다.


Total 2,641건 8 페이지
  • RSS
기술자료 목록
2501
MySQL   7268  2021-11-24 00:17 ~ 2021-11-24 00:22  
2500
그누보드   4796  2021-11-21 05:59 ~ 2021-11-24 00:20  
2499
전자결제   3843  2021-11-19 12:07 ~ 2021-11-19 14:51  
2498
HTML   8718  2021-11-18 16:00  
2497
PHP   6959  2021-11-09 17:52 ~ 2021-11-09 17:57  
2496
MySQL   4145  2021-11-08 16:13 ~ 2021-11-08 17:29  
2495
일반   4798  2021-11-06 01:29 ~ 2021-11-06 09:23  
2494
ClassicASP   4552  2021-11-01 02:08 ~ 2021-11-01 02:40  
2493
Editor   5879  2021-10-26 18:16 ~ 2021-11-09 14:15  
2492
그누보드   4851  2021-10-24 02:39  
2491
MySQL   3991  2021-10-18 12:18 ~ 2021-10-18 14:43  
2490
영카트   4644  2021-10-12 18:54  
2489
그누보드   4989  2021-10-08 17:20 ~ 2021-10-21 15:24  
2488
그누보드   5205  2021-10-08 14:45 ~ 2021-10-08 16:11  
열람
그누보드   6268  2021-10-08 07:41 ~ 2021-10-14 10:40  
2486
WordPress   4230  2021-09-16 14:14  
2485
JavaScript   6933  2021-09-14 19:34 ~ 2021-09-15 17:06  
2484
그누보드   4830  2021-09-02 12:15 ~ 2021-09-02 15:15  
2483
그누보드   4777  2021-08-31 18:52  
2482
XpressEngine   4339  2021-08-30 20:15 ~ 2021-08-30 23:16  

검색

해피정닷컴 정보

회사소개 회사연혁 협력사 오시는길 서비스 이용약관 개인정보 처리방침

회사명: 해피정닷컴   대표: 정창용   전화: 070-7600-3500   팩스: 042-670-8272
주소: (34368) 대전시 대덕구 대화로 160 대전산업용재유통단지 1동 222호
개인정보보호책임자: 정창용   사업자번호: 119-05-36414
통신판매업신고: 제2024-대전대덕-0405호 [사업자등록확인]  
Copyright 2001~2024 해피정닷컴. All Rights Reserved.