이미지 가로 세로 긴쪽 기준 썸네일 생성 하려면

이미지 가로 세로 긴쪽 기준 썸네일 생성 하려면

QA

이미지 가로 세로 긴쪽 기준 썸네일 생성 하려면

답변 4

본문

어떻게 해야 할까요..?

 

이미지 원본비율 유지하면서

가로 세로 긴쪽 기준으로 썸네일을 생성하려는데 잘 안되네요..

 

그래서 g4에서 사용하던 썸네일 생성 소스를 만지작 ...

 

        $file = $list[$i][file][0][path].'/'.$list[$i][file][0][file];
        if (preg_match("/\.(jp[e]?g|gif|png)$/i", $file) && file_exists($file))
        {
            $size = getimagesize($file);

 

파일명은 나오는데

$size 를 불러오지 못하네요..

 

이 질문에 댓글 쓰기 :

답변 4

해결 했습니다.

잘 되는지 좀 봐주세요.. 


list.skin.php

$t_w = $list[$i][file][0][image_width]; //원본파일 사이즈
$t_h = $list[$i][file][0][image_height];

$t_max = 150; //썸네일 최대 사이즈 - 환경설정 무시

if ($t_w < $t_max){
 if ($t_h > $t_max){
        $h = $t_max ;
        $w = ceil( $t_w * ( $t_max / $t_h ) );
      } else {
        $h = $t_h;
        $w = $t_w;
      }
 }else{
     if (( $t_h / $t_w ) > ($t_max / $t_max)){
        $h = $t_max ;
        $w = ceil( $t_w * ( $t_max / $t_h ) );
        }else{
        $w = $t_max ;
        $h = ceil( $t_h * ( $t_max / $t_w ) );
 }
}

    $thumb = get_list_thumbnail($board['bo_table'], $list[$i]['wr_id'], $w, $h);
//  $thumb = get_list_thumbnail($board['bo_table'], $list[$i]['wr_id'], $board['bo_gallery_width'], $board['bo_gallery_height']);

     if($thumb['src']) {
     $img_content = '<img src="'.$thumb['src'].'" alt="'.$thumb['alt'].'" width="'.$w.'" height="'.$h.'">';
//   $img_content = '<img src="'.$thumb['src'].'" alt="'.$thumb['alt'].'" width="'.$board['bo_gallery_width'].'" height="'.$board['bo_gallery_height'].'">'; 

 

 

 

 

18ccd411273a32a111f40846e435ea55_1434582616_8744.png
 

원본 비율 유지하면서
가로 세로 최대 사이즈 지정 썸네일 생성..  (세로로 너무 긴 사진이 있을 경우)

$tw_max = 150; //썸네일 가로 최대 사이즈 - 환경설정 무시
$th_max = 110; //썸네일 세로 최대 사이즈

if ($t_w < $tw_max){
 if ($t_h > $th_max){
        $h = $th_max ;
        $w = ceil( $t_w * ( $th_max / $t_h ) );
      } else {
        $h = $t_h;
        $w = $t_w;
      }
}else{
     if (( $t_h / $t_w ) > ($th_max / $tw_max)){
        $h = $th_max ;
        $w = ceil( $t_w * ( $th_max / $t_h ) );
        }else{
        $w = $tw_max ;
        $h = ceil( $t_h * ( $tw_max / $t_w ) );
 }
}

 

 

18ccd411273a32a111f40846e435ea55_1434583135_6572.png
 

위와 같은 건입니다.

소스를 어떤 부분에 넣어야 하는지 좀 부탁드립니다.

 

제가사용하는

list.skin.php 파일 입니다

<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

// 제목길이 잘 맞추세요.
$thu_width = '140';  //썸네일 폭
$thu_height = '120'; //썸네일 높이
$thu_quality = '100'; //썸네일 퀄리티_100 이하

if (!function_exists("imagecopyresampled")) alert("GD 2.0.1 이상 버전이 설치되어 있어야 사용할 수 있는 갤러리 게시판 입니다.");

$data_path = $g4[path]."/data/file/$bo_table";
$thumb_path = $data_path.'/thumb';

@mkdir($thumb_path, 0707);
@chmod($thumb_path, 0707);

$mod = $board[bo_gallery_cols];
$td_width = (int)(100 / $mod);

// 선택옵션으로 인해 셀합치기가 가변적으로 변함
$colspan = 5;
if ($is_category) $colspan++;
if ($is_checkbox) $colspan++;
if ($is_good) $colspan++;
if ($is_nogood) $colspan++;

// 제목이 두줄로 표시되는 경우 이 코드를 사용해 보세요.
// <nobr style='display:block; overflow:hidden; width:000px;'>제목</nobr>

/*
$tmp_bo_table = "cm_gallery_request";
$tmp_write_table = $g4[write_prefix] . $tmp_bo_table;
$sql = " select wr_id, wr_subject from $tmp_write_table where wr_is_comment = 0 and wr_comment = 0 order by wr_id desc ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++)
{
    echo "<div align=center><a href='$g4[bbs_path]/board.php?bo_table=$tmp_bo_table&wr_id=$row[wr_id]'><span style='height:18px; color:crimson; cursor:pointer;'>★ 이미지 요청 : $row[wr_subject] ★</span></a></div><br>";
}
*/
?>

<style type="text/css">
<!--
.bo_ti  { font-family:굴림; font-size:9pt; color:#555555; }
.data  { font-family:돋움; font-size:8pt; color:#999999; }
-->
</style>

<!-- 게시판 목록 시작 -->
<table width="<?=$width?>" align=center cellpadding=0 cellspacing=0><tr><td>

<!-- 분류 셀렉트 박스, 게시물 몇건, 관리자화면 링크 -->
<table width="100%" cellspacing="0" cellpadding="0">
<tr height="25">
    <? if ($is_category) { ?><form name="fcategory" method="get"><td width="50%"><select name=sca onchange="location='<?=$category_location?>'+this.value;"><option value=''>전체</option><?=$category_option?></select></td></form><? } ?>
    <td align="right">
        <img src="../skin/board/basic/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><?}?>
        <? if ($admin_href) { ?><a href="<?=$admin_href?>"><img src="<?=$board_skin_path?>/img/admin_button.gif" title="관리자" width="63" height="22" border="0" align="absmiddle"></a><?}?></td>
</tr>
<tr><td height=2></td></tr>
</table>

<form name="fboardlist" method="post" style="margin:0px;">
<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 width=100% cellpadding=0 cellspacing=0>
<tr><td colspan='<?=$mod?>' height=1 bgcolor="#5686AD"></td></tr>

<tr><td colspan='<?=$mod?>' height=25></td></tr>
<tr>
<?
for ($i=0; $i<count($list); $i++)
{
    if ($i && $i%$mod==0)
        echo "</tr><tr><td colspan='{$mod}' height=20></td></tr><tr>";
    $image = $list[$i][file][0][file];
    $img = "<img src='$board_skin_path/img/noimage.gif' border=0 width='$thu_width' title='이미지 없음'>";
    $thumb = $thumb_path.'/'.$list[$i][wr_id];
    if (!file_exists($thumb))
    {
        $file = $list[$i][file][0][path] .'/'. $list[$i][file][0][file];
        if (preg_match("/\.(jp[e]?g|gif|png)$/i", $file) && file_exists($file))
        {
            $size = @getimagesize($file);
            if ($size[2] == 1)
                $src = imagecreatefromgif($file);
            else if ($size[2] == 2)
                $src = imagecreatefromjpeg($file);
            else if ($size[2] == 3)
                $src = imagecreatefrompng($file);
            else
                continue;

            $rate = $thu_width / $size[0];
            $height = (int)($size[1] * $rate);

            if ($height < $thu_height)
                $dst = imagecreatetruecolor($thu_width, $height);
            else
                $dst = imagecreatetruecolor($thu_width, $thu_height);
            imagecopyresampled($dst, $src, 0, 0, 0, 0, $thu_width, $height, $size[0], $size[1]);
            imagejpeg($dst, $thumb_path.'/'.$list[$i][wr_id], $thu_quality);
            chmod($thumb_path.'/'.$list[$i][wr_id], 0606);
        }
    }

    if (file_exists($thumb))
        $img = "<img src='$thumb' width='$thu_width' border=0 style='border:1px solid #999999;'>";

    $style = "";
    if ($list[$i][icon_new])
        $style = " style='font-weight:bold;' ";
    $subject = "<span $style>".cut_str($list[$i][subject],20)."</span>";

    $comment_cnt = "";
    if ($list[$i][comment_cnt])
        $comment_cnt = " <a href=\"{$list[$i][comment_href]}\"><span style='font-size:7pt;'>{$list[$i][comment_cnt]}</span></a>";

    $bg = "";  //새글?
     if ($list[$i][icon_new])
         $bg="thumb_1_2.gif";
      else
         $bg="thumb_1.gif";


    echo "<td width='{$td_width}%' valign=top style='word-break:break-all;'>\n";
    echo "<table width='150' cellpadding='0' cellspacing='0' border='0'>\n";

    echo "<tr><td height='75' align='center' valign='top' background='{$board_skin_path}/myimg/thumb_2.gif' style='padding:10 0 7 0;'><a href='{$list[$i][href]}' onfocus='this.blur()'>$img</a></td></tr>\n";
   echo "<tr><td height='34' align='center'  style='padding-top:4px; padding-left:0px;' class='bo_ti'><a href='{$list[$i][href]}' onfocus='this.blur()'>$subject</a><input type=checkbox name=chk_wr_id[] value='{$list[$i][wr_id]}'></td></tr>\n";
    echo "\n";

    echo "</table></td>\n";

}

// 나머지 td
$cnt = $i%$mod;
if ($cnt)
    for ($i=$cnt; $i<$mod; $i++)
        echo "<td width='{$td_width}%'> </td>";
?>
</tr>
<tr><td colspan='<?=$mod?>' height=20></td></tr>
<tr><td colspan=<?=$mod?> height=1 bgcolor=#E7E7E7></td></tr>

<? if (count($list) == 0) { echo "<tr><td colspan='$mod' height=100 align=center>게시물이 없습니다.</td></tr>"; } ?>
<tr><td colspan=<?=$mod?> bgcolor="#5686AD" height=1>
</table>
</form>

<!-- 페이지 -->
<table width="100%" cellspacing="0" cellpadding="0">
<tr>
    <td width="100%" align="center" height=30 valign=bottom>
        <? if ($prev_part_href) { echo "<a href='$prev_part_href'><img src='$board_skin_path/img/btn_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>/", "<b><font style=\"font-family:돋움; font-size:9pt; color:#797979\">$1</font></b>", $write_pages);
        $write_pages = preg_replace("/<b>([0-9]*)<\/b>/", "<b><font style=\"font-family:돋움; font-size:9pt; color:orange;\">$1</font></b>", $write_pages);
        ?>
        <?=$write_pages?>
        <? if ($next_part_href) { echo "<a href='$next_part_href'><img src='$board_skin_path/img/btn_search_next.gif' border=0 align=absmiddle title='다음검색'></a>"; } ?>
    </td>
</tr>
</table>

<!-- 버튼 링크 -->
<form name=fsearch method=get style="margin:0px;">
<input type=hidden name=bo_table value="<?=$bo_table?>">
<input type=hidden name=sca      value="<?=$sca?>">
<table width=100% cellpadding=0 cellspacing=0>
<tr>
    <td width="50%" height="40">
        <? if ($list_href) { ?><a href="<?=$list_href?>"><img src="<?=$board_skin_path?>/img/btn_list.gif" border="0"></a><? } ?>
        <? if ($write_href) { ?><a href="<?=$write_href?>"><img src="<?=$board_skin_path?>/img/btn_write.gif" border="0"></a><? } ?>
        <? if (!$write_href) { ?><a href="<?=$g4[path]?>/bbs/write.php?bo_table=<?=$bo_table?>"><img src="<?=$board_skin_path?>/img/btn_write.gif" border="0"></a><? } ?>
        <? if ($is_checkbox) { ?>
            <a href="javascript:select_delete();"><img src="<?=$board_skin_path?>/img/btn_select_delete.gif" border="0"></a>
            <a href="javascript:select_copy('copy');"><img src="<?=$board_skin_path?>/img/btn_select_copy.gif" border="0"></a>
            <a href="javascript:select_copy('move');"><img src="<?=$board_skin_path?>/img/btn_select_move.gif" border="0"></a>
        <? } ?>
    </td>
    <td width="50%" align="right">
        <select name=sfl>
            <option value="wr_subject">제목</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" 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>
</tr>
</table>
</form>

</td></tr></table>
<script language="javascript">
function popupImage(imageURL){
imageHandle=open("","popupForImage","toolbar=no,location=no,status=no,manubar=no,scrollbars=no,resizable=no,width=100,height=100,top=0,left=0");
  imageHandle.document.write("<title></title>");
  imageHandle.document.write("<style>");
  imageHandle.document.write("*{margin:0;padding:0;border:0;}");
  imageHandle.document.write("</style>");
  imageHandle.document.write("<img src=\""+imageURL+"\" onload=\"window.resizeTo(this.width+6,this.height+52);\" onclick=\"self.close();\" style=\"cursor:hand;\" title=\"클릭하면 닫힙니다.\">");
}
</script>
<script language="JavaScript">
if ("<?=$sca?>") document.fcategory.sca.value = "<?=$sca?>";
if ("<?=$stx?>") {
    document.fsearch.sfl.value = "<?=$sfl?>";
    document.fsearch.sop.value = "<?=$sop?>";
}
</script>

<? if ($is_checkbox) { ?>
<script language="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=396, height=550, scrollbars=1");

    f.sw.value = sw;
    f.target = "move";
    f.action = "./move.php";
    f.submit();
}
</script>
<? } ?>
<!-- 게시판 목록 끝 --> 

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
  • 질문이 없습니다.
전체 0
© SIRSOFT
현재 페이지 제일 처음으로