[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 457건 2 페이지
  • RSS
기술자료 목록
열람
그누보드   6257  2021-10-08 07:41 ~ 2021-10-14 10:40  
436
그누보드   4815  2021-09-02 12:15 ~ 2021-09-02 15:15  
435
그누보드   4773  2021-08-31 18:52  
434
그누보드   5095  2021-08-01 20:59 ~ 2021-08-02 09:19  
433
그누보드   6836  2021-07-27 14:45 ~ 2021-08-05 18:06  
432
그누보드   5667  2021-06-30 07:32 ~ 2021-06-30 07:50  
431
그누보드   7369  2021-06-11 09:19 ~ 2021-06-11 09:20  
430
그누보드   6265  2021-06-03 16:20 ~ 2021-06-06 14:56  
429
그누보드   5642  2021-05-26 11:53 ~ 2021-05-27 08:49  
428
그누보드   7953  2021-05-18 13:48 ~ 2021-07-22 12:24  
427
그누보드   5379  2021-04-21 17:55 ~ 2021-06-15 18:19  
426
그누보드   4613  2021-02-25 22:28 ~ 2021-03-17 11:33  
425
그누보드   6132  2021-02-18 10:28 ~ 2021-02-18 14:10  
424
그누보드   6534  2021-02-08 14:43 ~ 2021-02-08 16:31  
423
그누보드   7674  2020-12-14 18:09 ~ 2023-04-04 11:18  
422
그누보드   6407  2020-12-07 15:15 ~ 2022-12-17 21:15  
421
그누보드   4595  2020-10-19 06:39 ~ 2022-02-01 09:57  
420
그누보드   4378  2020-10-16 17:08 ~ 2020-10-20 00:43  
419
그누보드   4944  2020-10-14 12:34 ~ 2021-03-23 18:09  
418
그누보드   5206  2020-10-13 14:01  

검색

해피정닷컴 정보

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

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