cheditor에서 넣은 이미지를 리사이징 시키려고 합니다.

cheditor에서 넣은 이미지를 리사이징 시키려고 합니다.

QA

cheditor에서 넣은 이미지를 리사이징 시키려고 합니다.

본문

게시판에서 cheditor를 통해 넣은 이미지를 리스트페이지에서 리사이징을 하려고 합니다.

 

그런데 리스트 페이지를 열면 첨부된 이미지를 읽어오지 못하는 현상이 발생하는데,

 

                $img_tags = explode("src=",$list[$i][wr_content]);

                $img_tag = explode(" ",$img_tags[1]);
                $img_url = explode(">",$img_tag[0]);


                $real_img_url = $img_url[0];
                $clear_img_url =  str_replace('"','',$real_img_url);

                //파일명 추출
                $img_file2_st=strrev($img_url[0]);
                $img_file2_ex=explode("/",$img_file2_st);
                $img_file2=strrev($img_file2_ex[0]);
                $clear_img_file2=trim(str_replace('"','',$img_file2));

                //경로명 추출
                for($s=1; $s<sizeof($img_file2_ex); $s++){
                    $img_url2=$img_url2."/".$img_file2_ex[$s];
                }
                $img_url_path=strrev($img_url2);
                $clear_img_url_path=trim(str_replace('"','',$img_url_path));



                if($clear_img_url){
                    $pic = "<img src=$clear_img_url width=$pic_width height=$pic_height border=0>";
                    //$pic=makeThumbs($clear_img_url_path, $clear_img_file2, $pic_width, $pic_height, "");
                } 

 

첨부된 이미지가 아예 없는 루틴을 타는 것도 아니고 이미지 주소는 불러오지만 썸네일 이미지를 생성하지 못합니다. 

 

skin.lib.php를 보니

 

$oriFile = $oriPath . "/" . $oriFileName;
        if (is_file($oriFile) == false)

 

이 부분에서 파일의 경로를 가지오지 못해서 이미지가 정상적으로 출력이 되지 않는데

 

어떻게 해야 이미지 경로를 정상적으로 가져와서 출력할 수 있을까요? 많은 분들의 조언 부탁드립니다. 

 

리스트 스킨 페이지입니다. 


<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가 
// 선택옵션으로 인해 셀합치기가 가변적으로 변함
$colspan = 5;
//if ($is_category) $colspan++;
if ($is_checkbox) $colspan++;
if ($is_good) $colspan++;
if ($is_nogood) $colspan++;
include_once("$board_skin_path/skin.lib.php"); //썸네일 이미지 함수
// 제목이 두줄로 표시되는 경우 이 코드를 사용해 보세요.
// <nobr style='display:block; overflow:hidden; width:000px;'>제목</nobr>
?>
<style>
.board_top { clear:both; }
.board_list { clear:both; width:100%; table-layout:fixed; margin:5px 0 0 0; }
.board_list th { font-weight:bold; font-size:12px; } 
/*
.board_list th { background:url(<?=$board_skin_path?>/img/title_bg.gif) repeat-x; } 
.board_list th { white-space:nowrap; height:34px; overflow:hidden; text-align:center; } 
.board_list th { border-top:1px solid #ddd; border-bottom:1px solid #ddd; } 
*/
.board_list tr.bg0 { background-color:#ffffff; } 
.board_list tr.bg1 { background-color:#ffffff; } 
.board_list td { padding:0 0 0 0; }
.board_list td { border-bottom:1px solid #eeeeee; } 
.board_list td.num { color:#f0f0f0; text-align:center; }
.board_list td.checkbox { text-align:center; }
.board_list td.subject { overflow:hidden; }
.board_list td.name { padding:0 0 0 10px; }
.board_list td.datetime { font:normal 11px tahoma; color:#BABABA; text-align:center; }
.board_list td.hit { font:normal 11px tahoma; color:#BABABA; text-align:center; }
.board_list td.good { font:normal 11px tahoma; color:#BABABA; text-align:center; }
.board_list td.nogood { font:normal 11px tahoma; color:#BABABA; text-align:center; }
.board_list .notice { font-weight:normal; }
.board_list .current { font:bold 11px tahoma; color:#E15916; }
.board_list .comment { font-family:Tahoma; font-size:10px; color:#EE5A00; }
.board_button { clear:both; margin:10px 0 0 0; }
.board_page { clear:both; text-align:center; margin:3px 0 0 0; }
.board_page a:link { color:#777; }
.board_search { text-align:center; margin:10px 0 0 0; }
.board_search .stx { height:21px; border:1px solid #9A9A9A; border-right:1px solid #D8D8D8; border-bottom:1px solid #D8D8D8; }
.board_list2 td{border-bottom:0px;}
</style>
<!-- 게시판 목록 시작 -->
<table width="<?=$width?>" align="center" cellpadding="0" cellspacing="0"><tr><td>
    <!-- 분류 셀렉트 박스, 게시물 몇건, 관리자화면 링크 -->
    <? if ($admin_href) { ?>
    <div class="board_top">
        <div style="float:left;">
            <form name="fcategory" method="get" style="margin:0px;">
            <? if ($is_category) { ?>
            <select name=sca onchange="location='<?=$category_location?>'+<?=strtolower($g4[charset])=='euc-kr' ? "encodeURIComponent(this.value)" : "this.value"?>;">
            <option value=''>전체</option>
            <?=$category_option?>
            </select>
            <? } ?>
            </form>
        </div>
        
        <div style="float:right;">
            <img src="<?=$board_skin_path?>/img/icon_total.gif" align="absmiddle" border='0'>
            <span style="color:#888888; font-weight:bold;">Total <?=number_format($total_count)?></span>
            <? if ($rss_href) { ?><a href='<?=$rss_href?>'><img src='<?=$board_skin_path?>/img/btn_rss.gif' border='0' align="absmiddle"></a><?}?>
            <a href="<?=$admin_href?>"><img src="<?=$board_skin_path?>/img/btn_admin.gif" border='0' title="관리자" align="absmiddle"></a>
        </div>
        
    </div>
    <? } ?>
    
    <!-- 제목 -->
    <form name="fboardlist" method="post">
    <input type='hidden' name='bo_table' value='<?=$bo_table?>'>
    <input type='hidden' name='sfl'  value='<?=$sfl?>'>
    <input type='hidden' name='stx'  value='<?=$stx?>'>
    <input type='hidden' name='spt'  value='<?=$spt?>'>
    <input type='hidden' name='page' value='<?=$page?>'>
    <input type='hidden' name='sw'   value=''>
    <table cellspacing="0" cellpadding="0" class="board_list">
    
    <? if ($is_checkbox) { ?><col width="40" /><? } ?>
    
    <col />
    <tr>
        <? if ($is_checkbox) { ?>
        <th><input onclick="if (this.checked) all_checked(true); else all_checked(false);" type="checkbox"></th>
        <th>제   목</th>
        <? } ?>
    </tr>
    <? 
    for ($i=0; $i<count($list); $i++) { 
        $bg = $i%2 ? 0 : 1;
    ?>
    <tr class="bg<?=$bg?>"> 
        <? if ($is_checkbox) { ?>
        <td class="checkbox"><input type=checkbox name=chk_wr_id[] value="<?=$list[$i][wr_id]?>"></td><? } ?>
        <td class="subject" valign="top" style="padding:15 0 15 0;">
            <? 
            //사진 가져오기
            $pic_width= 150; //사진의 보여질 가로
            $pic_height = 110; //사진의 보여질 세로
            $pic = "";
            $check = @getimagesize($g4[path]."/data/file/$bo_table/".$list[$i][file][0][file]);
            if($list[$i][file][0][file] and $check[0] >0){
                $pic = makeThumbs($g4[path]."/data/file/$bo_table", $list[$i][file][0][file], $pic_width, $pic_height, $list[$i][subject]);
            }else{
                $img_tags = explode("src=",$list[$i][wr_content]); 
                $img_tag = explode(" ",$img_tags[1]); 
                $img_url = explode(">",$img_tag[0]); 
                $real_img_url = $img_url[0]; 
                $clear_img_url =  str_replace('"','',$real_img_url); 
                //파일명 추출
                $img_file2_st=strrev($img_url[0]);
                $img_file2_ex=explode("/",$img_file2_st);
                $img_file2=strrev($img_file2_ex[0]);
                $clear_img_file2=trim(str_replace('"','',$img_file2));
                echo $img_file2_st."<br>";
                
                $img_url2="";
                //경로명 추출
                for($s=1; $s<sizeof($img_file2_ex); $s++){
                    $img_url2=$img_url2."/".$img_file2_ex[$s];
                }
                $cc=substr($img_url2,1,1000);
                echo $cc."<<<br>";
                echo $img_url2."<br>";
                $img_url_path=strrev($cc);
                $clear_img_url_path=trim(str_replace('"','',$img_url_path));
                echo $clear_img_url_path."<br>";
//http://dnew31.zerois.net/admin/data/cheditor4/1408/ea49350bce255ceafad0a8c3d6304998_ntz9WOwAndpS7kXUzu8Sr2k5np.jpg
//echo $clear_img_url."<br>";
                if($clear_img_url){
                    //$pic = "<img src=$clear_img_url width=$pic_width height=$pic_height border=0>";
                    $pic=makeThumbs(trim($clear_img_url_path), trim($clear_img_file2), $pic_width, $pic_height, 'dd');
                }
            }
            if($pic == ""){$pic = "<img src=$board_skin_path/img/medipium.jpg width=$pic_width height=$pic_height border=0>";}
            //사진과 제목 테이블
            echo "
            <Table width=100% height=100% border=0 cellspacing=0 cellpadding=0 class=board_list2>
            <tr>
                <td width=$pic_width height=$pic_height style=padding-right:15;><a href='{$list[$i][href]}'>$pic</a></td>
                <td valign=top>";
                    //제목 테이블
                    echo "
                    <Table width=100%  border=0 cellspacing=0 cellpadding=0 valign=top>
                    <tr>
                        <td valign=top>";
                            echo $nobr_begin;
                            echo $list[$i][reply];
                            echo $list[$i][icon_reply];
                            if ($is_category && $list[$i][ca_name]) { 
                                echo "<span class=small><font color=gray>[<a href='{$list[$i][ca_name_href]}'>{$list[$i][ca_name]}</a>]</font></span> ";
                            }
                            if ($list[$i][is_notice])
                               echo "<a href='{$list[$i][href]}'><span class=web_font12><b>{$list[$i][subject]}</b></span></a>";
                            else
                               echo "<a href='{$list[$i][href]}' class=btn12><span class=web_font14><b>{$list[$i][subject]}</b></span></a>";
                            //if ($list[$i][comment_cnt]) 
                            //    echo " <a href=\"{$list[$i][comment_href]}\"><span class='comment'>{$list[$i][comment_cnt]}</span></a>";
                            // if ($list[$i]['link']['count']) { echo "[{$list[$i]['link']['count']}]"; }
                            // if ($list[$i]['file']['count']) { echo "<{$list[$i]['file']['count']}>"; }
                            //echo " " . $list[$i][icon_new];
                            //echo " " . $list[$i][icon_file];
                            //echo " " . $list[$i][icon_link];
                            //echo " " . $list[$i][icon_hot];
                            //echo " " . $list[$i][icon_secret];
                            echo $nobr_end;
                    
                    $wr_content = cut_str(strip_tags($list[$i][wr_content]),300);
                    echo "
                    </td>
                    </tr>
                    <tr>
                        <td style=line-height:160%; style=padding-top:10px;><span><a href='{$list[$i][href]}'>".$wr_content."</a></span></td>
                    </tr>
                    </table>";
                    //제목 테이블 끝
            echo "
                </td>
            </tr>
            </table>
            ";
            //사진과 제목 테이블 끝
            ?>
        </td>
    </tr>
    <? } // end for ?>
    <? if (count($list) == 0) { echo "<tr><td colspan='$colspan' height=100 align=center>게시물이 없습니다.</td></tr>"; } ?>
    </table>
    </form>
    <div class="board_button">
        <div style="float:left;">
        <? if ($list_href) { ?>
        <a href="<?=$list_href?>"><img src="<?=$board_skin_path?>/img/btn_list.gif" align="absmiddle" border='0'></a>
        <? } ?>
        <? if ($is_checkbox) { ?>
        <a href="javascript:select_delete();"><img src="<?=$board_skin_path?>/img/btn_select_delete.gif" align="absmiddle" border='0'></a>
        <a href="javascript:select_copy('copy');"><img src="<?=$board_skin_path?>/img/btn_select_copy.gif" align="absmiddle" border='0'></a>
        <a href="javascript:select_copy('move');"><img src="<?=$board_skin_path?>/img/btn_select_move.gif" align="absmiddle" border='0'></a>
        <? } ?>
        </div>
        <div style="float:right;">
        <? if ($write_href) { ?><a href="<?=$write_href?>"><img src="<?=$board_skin_path?>/img/btn_write.gif" border='0'></a><? } ?>
        </div>
    </div>
    <!-- 페이지 -->
    <div class="board_page">
        <? if ($prev_part_href) { echo "<a href='$prev_part_href'><img src='$board_skin_path/img/page_search_prev.gif' border='0' align=absmiddle title='이전검색'></a>"; } ?>
        <?
        // 기본으로 넘어오는 페이지를 아래와 같이 변환하여 이미지로도 출력할 수 있습니다.
        //echo $write_pages;
        $write_pages = str_replace("처음", "<img src='$board_skin_path/img/page_begin.gif' border='0' align='absmiddle' title='처음'>", $write_pages);
        $write_pages = str_replace("이전", "<img src='$board_skin_path/img/page_prev.gif' border='0' align='absmiddle' title='이전'>", $write_pages);
        $write_pages = str_replace("다음", "<img src='$board_skin_path/img/page_next.gif' border='0' align='absmiddle' title='다음'>", $write_pages);
        $write_pages = str_replace("맨끝", "<img src='$board_skin_path/img/page_end.gif' border='0' align='absmiddle' title='맨끝'>", $write_pages);
        //$write_pages = preg_replace("/<span>([0-9]*)<\/span>/", "$1", $write_pages);
        $write_pages = preg_replace("/<b>([0-9]*)<\/b>/", "<b><span style=\"color:#4D6185; font-size:12px; text-decoration:underline;\">$1</span></b>", $write_pages);
        ?>
        <?=$write_pages?>
        <? if ($next_part_href) { echo "<a href='$next_part_href'><img src='$board_skin_path/img/page_search_next.gif' border='0' align=absmiddle title='다음검색'></a>"; } ?>
    </div>
    <!-- 검색 -->
    <div class="board_search">
        <form name="fsearch" method="get">
        <input type="hidden" name="bo_table" value="<?=$bo_table?>">
        <input type="hidden" name="sca"      value="<?=$sca?>">
        <select name="sfl" style="width:100px; font-size:16px;">
            <option value="wr_subject" style="height:27px;">제목</option>
            <option value="wr_content">내용</option>
            <option value="wr_subject||wr_content">제목+내용</option>
            <!--
            <option value="mb_id,1">회원아이디</option>
            <option value="mb_id,0">회원아이디(코)</option>
            <option value="wr_name,1">글쓴이</option>
            <option value="wr_name,0">글쓴이(코)</option>
            -->
        </select>
        <input name="stx" style="height:27px; font-size:16px;" class="stx" maxlength="15" itemname="검색어" required value='<?=stripslashes($stx)?>'>
        <input type="image" src="<?=$board_skin_path?>/img/btn_search.gif" border='0' align="absmiddle">
        <input type="radio" name="sop" value="and">and
        <input type="radio" name="sop" value="or">or
        </form>
    </div>
</td></tr></table>
<script type="text/javascript">
if ('<?=$sca?>') document.fcategory.sca.value = '<?=$sca?>';
if ('<?=$stx?>') {
    document.fsearch.sfl.value = '<?=$sfl?>';
    if ('<?=$sop?>' == 'and') 
        document.fsearch.sop[0].checked = true;
    if ('<?=$sop?>' == 'or')
        document.fsearch.sop[1].checked = true;
} else {
    document.fsearch.sop[0].checked = true;
}
</script>
<? if ($is_checkbox) { ?>
<script type="text/javascript">
function all_checked(sw) {
    var f = document.fboardlist;
    for (var i=0; i<f.length; i++) {
        if (f.elements[i].name == "chk_wr_id[]")
            f.elements[i].checked = sw;
    }
}
function check_confirm(str) {
    var f = document.fboardlist;
    var chk_count = 0;
    for (var i=0; i<f.length; i++) {
        if (f.elements[i].name == "chk_wr_id[]" && f.elements[i].checked)
            chk_count++;
    }
    if (!chk_count) {
        alert(str + "할 게시물을 하나 이상 선택하세요.");
        return false;
    }
    return true;
}
// 선택한 게시물 삭제
function select_delete() {
    var f = document.fboardlist;
    str = "삭제";
    if (!check_confirm(str))
        return;
    if (!confirm("선택한 게시물을 정말 "+str+" 하시겠습니까?\n\n한번 "+str+"한 자료는 복구할 수 없습니다"))
        return;
    f.action = "./delete_all.php";
    f.submit();
}
// 선택한 게시물 복사 및 이동
function select_copy(sw) {
    var f = document.fboardlist;
    if (sw == "copy")
        str = "복사";
    else
        str = "이동";
                       
    if (!check_confirm(str))
        return;
    var sub_win = window.open("", "move", "left=50, top=50, width=500, height=550, scrollbars=1");
    f.sw.value = sw;
    f.target = "move";
    f.action = "./move.php";
    f.submit();
}
</script>
<? } ?>
<!-- 게시판 목록 끝 --> 

 

스킨 라이브러리 파일입니다. 


<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가 
if (!function_exists("makeThumbs")) {
    function makeThumbs($oriPath, $oriFileName, $thmWidth="", $thmHeight="", $thmAlt="") {
        global $g4, $board_skin_path;
/*
        echo $oriPath."<br>";
        echo $oriFileName."<br>";
        echo $thmWidth."<br>";
        echo $thmHeight."<br>";
*/
        $errorFilePrt = "<img src='$board_skin_path/img/noimage.gif' border=0 title='이미지 없음'>";
        $oriFile = $oriPath . "/" . $oriFileName;
        if (is_file($oriFile) == false) return $errorFilePrt; // 원본 부재
        $thmPath = $oriPath . "/thumbs";
        $thmFile = $thmPath . "/" . $oriFileName;
        $oriSize = getimagesize($oriFile);
        $oriWidth = $oriSize[0];
        $oriHeight = $oriSize[1];
        $oriType = $oriSize[2];
        if ($oriType > 3) return $errorFilePrt; // 원본 이미지 타입 오류
        $oriRate = $oriWidth / $oriHeight;
        if ($thmWidth == "" && $thmHeight == "") return $errorFilePrt; // 썸네일 사이즈 미지정
        if ($thmWidth == "") $thmWidth = $thmHeight * $oriRate;
        if ($thmHeight == "") $thmHeight = $thmWidth / $oriRate;
        $widthRate = $thmWidth / $oriWidth;
        $heightRate = $thmHeight / $oriHeight;
        $oriFilePrt = "<img src=\"{$oriFile}\" width=\"{$oriWidth}\" height=\"{$oriHeight}\" border=\"0\" alt=\"{$thmAlt}\" />";
        if ($widthRate >= 1 && $heightRate >= 1) { // 리사이징 불필요
            return $oriFilePrt;
        }
        if (file_exists($thmFile)) { // 썸네일 유무
            $fp = fopen($thmFile, "r");
            $fstat = fstat($fp);
            $thmFileTime = $fstat['ctime'];
            fclose($fp);
            $fp = fopen($oriFile, "r");
            $fstat = fstat($fp);
            $oriFileTime = $fstat['ctime'];
            fclose($fp);
            if ($thmFileTime > $oriFileTime) { // 썸네일 갱신 불필요
                $thmSize = getimagesize($thmFile);
                $thmFilePrt = "<img src=\"{$thmFile}\" width=\"{$thmSize[0]}\" height=\"{$thmSize[1]}\" border=\"0\" alt=\"{$thmAlt}\" />";
            } else {
                @unlink($thmFile);
            }
        }
        @mkdir($thmPath);
        @chmod($thmPath, 0707);
        if ($widthRate < $heightRate) {
            $tempWidth = (int)($oriWidth * $heightRate);
            $tempHeight = $thmHeight;
        } else {
            $tempWidth = $thmWidth;
            $tempHeight = (int)($oriHeight * $widthRate);
        }
        if ($tempWidth == "") $tempWidth = $thmWidth;
        if ($tempHeight == "") $tempHeight = $thmHeight;
        switch($oriType) {
            case(1) :
                if(function_exists('imagecreateFromGif')) $tempImage = imagecreateFromGif($oriFile);
                break;
            case(2) :
                if(function_exists('imagecreateFromJpeg')) $tempImage = imagecreateFromJpeg($oriFile);
                break;
            case(3) :
                if(function_exists('imagecreateFromPng')) $tempImage = imagecreateFromPng($oriFile);
                break;
        }
        if ($tempImage) {
            if (function_exists('imagecreatetruecolor')) {
                $tempCanvas = imagecreatetruecolor($thmWidth, $thmHeight);
            } else {
                $tempCanvas = imagecreate($thmWidth, $thmHeight);
            }
            if (function_exists('imagecopyresampled')) {
                imagecopyresampled($tempCanvas, $tempImage, 0, 0, 0, 0, $tempWidth, $tempHeight, ImageSX($tempImage), ImageSY($tempImage));
            } else {
                imagecopyresized($tempCanvas, $tempImage, 0, 0, 0, 0, $tempWidth, $tempHeight, ImageSX($tempImage), ImageSY($tempImage));
            }
            ImageDestroy($tempImage);
            ImageJpeg($tempCanvas, $thmFile, 100);
            ImageDestroy($tempCanvas);
            unset($tempImage, $tempCanvas);
        }
        $thmFilePrt = "<img src=\"{$thmFile}\" width=\"{$thmWidth}\" height=\"{$thmHeight}\" border=\"0\" alt=\"{$thmAlt}\" />";
        return $thmFilePrt;
    }
}
?> 
 

이 질문에 댓글 쓰기 :

답변 1

그누보드4에서 에디터를 cheditor 5.1을 사용하신다면

에디터로 첨부된 이미지는 리사이징 되십니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 55
QA 내용 검색

회원로그인

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