이전 목록 다음
미채택 완료

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

2014-08-11 (월) 17:43:14 7,673

게시판에서 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)

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

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

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

Copy
<?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>제&nbsp;&nbsp;&nbsp;목</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><? } ?><!-- 게시판 목록 끝 -->

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

Copy
<?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개 / 댓글 1개

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

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

답변에 대한 댓글 1개

리사이징 되는 건 아는데 비율을 제가 주고선 그 비율대로 리사이징을 하려고 하거든요.

답변을 작성하려면 로그인이 필요합니다.