썸네일 세로가 잘려서 나옵니다. > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

썸네일 세로가 잘려서 나옵니다. 정보

썸네일 세로가 잘려서 나옵니다.

본문

제가 원하는건 세로도 비율대로 출력되었으면 합니다~!
center crop 되어서 ㅜㅜㅜ
부탁 드립니다~!!


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

// 제목길이 잘 맞추세요.
$thumb_width = '175';  //썸네일 폭
$thumb_height = '117'; //썸네일 높이
$thumb_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)(115 / $mod);

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

<!--
    1 ) Reference to the file containing the javascript.
    This file must be located on your server.
-->

<script type="text/javascript" src="<?=$board_skin_path?>/highslide/highslide-with-gallery.js"></script>


<!--
    2) Initialize the hs object and optionally override the settings defined at the top
    of the highslide.js file. The parameter hs.graphicsDir is important!
-->

<script type="text/javascript">
hs.graphicsDir = '<?=$board_skin_path?>/highslide/graphics/';
hs.align = 'center';
hs.transitions = ['expand', 'crossfade'];
hs.wrapperClassName = 'dark borderless floating-caption';
hs.fadeInOut = true;
hs.dimmingOpacity = .75;

// Add the controlbar
if (hs.addSlideshow) hs.addSlideshow({
//slideshowGroup: 'group1',
interval: 5000,
repeat: false,
useControls: true,
fixedControls: 'fit',
overlayOptions: {
opacity: .6,
position: 'bottom center',
hideOnMouseOut: true
}
});
</script>

<!--
    3) These CSS-styles are necessary for the script to work. You may also put
    them in an external CSS-file. See the webpage for documentation.
-->
<link rel="stylesheet" type="text/css" href="<?=$board_skin_path?>/highslide/highslide.css" />

<style type="text/css">
input, button, textarea, select, {color: #000000;font-family:Tahoma,돋움;}
td { color: #f0f0f0; }
.exif_info {font-family:Arial; font-size:10px; color:#f0f0f0; font-weight:normal;}
.view_info {font-family:Tahoma,굴림; font-size:10px; color:#36CB36; font-weight:bold;}
</style>
</head>

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

<!-- 분류 셀렉트 박스, 게시물 몇건, 관리자화면 링크 -->
<table width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#ffffff">
      <tr>
        <td width="4" nowrap="nowrap"></td>
        <td>
        <table width="100%" border="0" cellspacing="0" cellpadding="7">
          <tr>
            <td width="70%" align="left" nowrap="nowrap">
<? if ($is_category) { ?>
<? if (!$wr_id) {  ?>
<? 
    $cnt_bo_1 = $bo_1[0] ? $bo_1[0] : 10; // 한줄당 분류 갯수(현재:10)
    $cnt = 1;
    $cnt0 = 0;
    $bb_s=""; $bb_e="";
    $b_s=""; $b_e="";
    $arr = explode("|", $board[bo_category_list]); // 구분자가 , 로 되어 있음
    $str = " |";

for ($i=0; $i<count($arr); $i++)
      if (trim($arr[$i]))  {
  if ($sca == $arr[$i]) { $cnt0++; $b_s="<b>"; $b_e="</b>"; } else {$b_s=""; $b_e="";}
          $str .= " <a href='./board.php?bo_table=$bo_table&sca=".urlencode($arr[$i])."' class='cate_link'>$b_s$arr[$i]$b_e</a> |";
if ($cnt == $cnt_bo_1) { $cnt = 0; $str .= "<br>"; }
    $cnt++;
}
    if ($cnt0 == 0 ) { $bb_s="<b>"; $bb_e="</b>"; }
?>
  <?echo " | ";echo $bb_s;?><a href='./board.php?bo_table=<?=$bo_table?>&page=<?=$page?>' class='cate_link'>전체</a><?=$bb_e?>
  <?=$str?>
<? } ?>
  <? } else { ?>
<!-- 페이지 -->
<? if ($prev_part_href) { echo "<a href='$prev_part_href'><img src='$board_skin_path/img/prev_btn.jpg' width='13' height='13' border='0' align='absmiddle' title='이전검색'></a>"; } ?>
<? echo $write_pages; ?>
<? if ($next_part_href) { echo "<a href='$next_part_href'><img src='$board_skin_path/img/next_btn.jpg' width='13' height='13' border='0' align='absmiddle' title='다음검색'></a>"; } ?>
<? } ?>
</td>
            <td width="30%" align="right"  nowrap="nowrap">
<? if ($admin_href) { ?>게시물 <?=number_format($total_count)?>건&nbsp;&nbsp;<? } ?>
<? if ($rss_href) { ?><a href='<?=$rss_href?>'><img src='<?=$board_skin_path?>/img/rss_btn.jpg' title="RSS" width="57" height="22" border="0" align="absmiddle"></a><?}?>
<? if ($admin_href) { ?><a href="<?=$admin_href?>"><img src="<?=$board_skin_path?>/img/admin_btn.jpg" title="관리자" width="57" height="22" border="0" align="absmiddle"></a><?}?>
</td>
          </tr>
        </table>
        </td>
        <td width="4" nowrap="nowrap"></td>
      </tr>
</table>

<div style='height:20px;'></div>
<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" border="0">
<tr>
       
<?
for ($i=0; $i<count($list); $i++)
{
    if ($i && $i%$mod==0)
    echo "</tr><tr>";
    $img = "<img src='$board_skin_path/img/noimage.gif' border=0 title='이미지 없음'>";
$image = $list[$i][file][0][file];
    $thumb = $thumb_path.'/'.$list[$i][file][0][file];

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 = $thumb_width / $size[0];
            $height = (int)($size[1] * $rate);

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

  if (file_exists($thumb) && $list[$i][file][0][file])
  {
$img = "<a href='$g4[path]/data/file/$bo_table/$image') class='highslide' onclick='return hs.expand(this)' ><img src='{$thumb}' width='{$thumb_width}' height='{$thumb_height}' border='0' style='border:0px solid #999999;' alt='' title='Click to enlarge'></a>";
} else {
preg_match("`<\s*img\s+src\s*=\s*['|\"]?([^'|\"\s]+://[^'|\"\s]+\.(gif|jpe?g|png))['|\"]?\s*[^>]+`i", $list[$i]['wr_content'], $images);

if (!empty($images[1]))
{
$img_size = GetImageSize("$images[1]");
if($img_size[0] >= $img_size[1])
{
$imgper = $thumb_width/$img_size[0];
$thumb_height = $img_size[1]*$imgper;
}else{
$imgper = $thumb_height/$img_size[1];
$thumb_width = $img_size[0]*$imgper;
}

$img = "<a href='$g4[path]/data/file/$bo_table/$image') class='highslide' onclick='return hs.expand(this)' ><img src='{$images[1]}' width='{$thumb_width}' height='{$thumb_height}' align='absmiddle' border='0'></a>";
} else {
echo "";
}
}

$style = "";
    if ($list[$i][icon_new])
        $style = " style='font-weight:normal;' ";
    $subject = "<a href='{$list[$i][href]}' onfocus='this.blur()'><span $style>".cut_str($list[$i][subject],77)."</span></a>";

    $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 cellpadding='0' cellspacing='0' border='0'>\n"; 
    echo "<br><br><br><tr><td>$img";
    // 사진 밑의 제목과 Exif 정보를 출력하는 내용
      echo "</div></td></tr>\n";
if ($is_checkbox) echo "<tr><td align='center'><a href='{$list[$i][href]}' onfocus='this.blur()'>$subject</a> <a href=\"{$list[$i][comment_href]}\">{$list[$i][comment_cnt]}</a></td></tr>\n";
if ($is_checkbox) echo "<tr><td align='center'>{$list[$i][datetime2]}";
if ($is_checkbox) echo "<input type=checkbox name=chk_wr_id[] value='{$list[$i][wr_id]}'>";
    echo "</td></tr>\n";
    echo "</table></td>\n";

}

// 나머지 td
$cnt = $i%$mod;
if ($cnt)
    for ($i=$cnt; $i<$mod; $i++)
  echo "<td width='{$td_width}%'>&nbsp;</td>";
?>

</tr>
<tr>
<td colspan='<?=$mod?>' height='20'>
</td>
</tr>
<? if (count($list) == 0) { echo "<tr><td colspan='$mod' height=100 align=center>게시물이 없습니다.</td></tr>"; } ?>
</table>
</form>
</td>
</tr>
<tr>
<td align="center">
<!-- 하단버튼 -->
<table width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#ffffff">
    <tr>
        <td width="4" nowrap="nowrap"></td>
        <td>
        <table width="100%" border="0" cellspacing="0" cellpadding="7">
          <tr>
            <td align="left">
    <!-- 페이지 -->
<? if ($prev_part_href) { echo "<a href='$prev_part_href'><img src='$board_skin_path/img/prev_btn.jpg' width='13' height='13' border='0' align='absmiddle' title='이전검색'></a>"; } ?>
<? echo $write_pages; ?>
<? if ($next_part_href) { echo "<a href='$next_part_href'><img src='$board_skin_path/img/next_btn.jpg' width='13' height='13' border='0' align='absmiddle' title='다음검색'></a>"; } ?>
</td>
          </tr>
  <tr>
<td colspan="2">
<!-- 검색 토글 -->
<script language="JavaScript" type="text/javascript">
<!--
function toggleMenu(currMenu) {
        if (document.all) {
                thisMenu = eval("document.all." + currMenu + ".style")
                if (thisMenu.display == "block") {
                        thisMenu.display = "none"
                }
                else {
                        thisMenu.display = "block"
                }
                return false
        }
        else {
                return true
      }
}
//-->
</script>

<!-- 버튼 링크 -->
<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%" align="left">
        <? if ($list_href) { ?><a href="<?=$list_href?>"><img src="<?=$board_skin_path?>/img/list_btn.jpg" width="50" height="22" align="absmiddle" border="0"></a><? } ?>
        <? if ($write_href) { ?><a href="<?=$write_href?>"><img src="<?=$board_skin_path?>/img/write_btn.jpg" width="50" height="22" align="absmiddle" border="0"></a><? } ?>
        <? if ($is_checkbox) { ?>
            <a href="javascript:select_delete();"><img src="<?=$board_skin_path?>/img/s_del_btn.jpg" width="50" height="22" align="absmiddle" border="0"></a>
            <a href="javascript:select_copy('copy');"><img src="<?=$board_skin_path?>/img/s_copy_btn.jpg" width="50" height="22" align="absmiddle" border="0"></a>
            <a href="javascript:select_copy('move');"><img src="<?=$board_skin_path?>/img/s_move_btn.jpg" width="50" height="22" align="absmiddle" border="0"></a>
        <? } ?>
    </td>
<!--<td width="50%" align="right">
        <select name=sfl class="search_select">
            <option value='wr_subject'>제목</option>
            <option value='wr_content'>내용</option>
            <option value='wr_subject||wr_content'>제목+내용</option>
<option value='mb_id'>회원아이디</option>
            <option value='wr_name'>이름</option>
        </select>&nbsp;

<input name="stx" maxlength="15" itemname="검색어" required value="<?=$stx?>" class="search_input" />&nbsp;
<select name=sop class="search_select">
            <option value=and>and</option>
            <option value=or>or</option>
        </select>&nbsp;
        <input type=image src="<?=$board_skin_path?>/img/search_btn.jpg" width="50" height="22" border="0" align="absmiddle" />
        </td>-->
</tr>
</table>
</form>
  </td>
  </tr>
  </table>
  </td>
      <td width="4" nowrap="nowrap"></td>
      </tr>
    </table>
</td>
</tr>
</table>
<div style='height:20px;'></div>
</td>
</tr>
</table>


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

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

댓글 전체

가로 세로 크기를 고정해서 썸네일을 만들려면 현재와 같이 될 수 밖에 없습니다
원본 비율대로 축소하면 가로 또는 세로 중 하나를 고정 하고 다른 것은 비율에 맞게 축소가 되니
썸네일 크기가 일정하지않게 됩니다
위와 같은 인물 사진은 자를 부분 위치를 정해서 썸네일을 만드는 특별한 방법으로 해야하는데
질답으로 해결할 수 없습니다
자료실에 그런 기능이 들어있는 스킨이 있을 것입니다
© SIRSOFT
현재 페이지 제일 처음으로