view.skin.php에서 첫이미지의 사이즈를 강제로 줄여서 보여주려면? > 그누4 질문답변

그누4 질문답변

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

view.skin.php에서 첫이미지의 사이즈를 강제로 줄여서 보여주려면? 정보

view.skin.php에서 첫이미지의 사이즈를 강제로 줄여서 보여주려면?

첨부파일

view.skin.php (10.4K) 6회 다운로드 2009-02-16 20:10:51

본문

$view[file][0][view]

view.skin.php에서 위처럼 하면 첫번째 이미지를 불러오게 됩니다.

그냥 위 첫번째 이미지의 사이즈를 원본크기에 상관없이 가로/세로 = 120/120 픽셀로
뷰화면내에서 보이게 하려면 어떻게 해야할까요?

댓글 전체

리플 감사합니다. 현재 아래 코드를 사용하고 있습니다.

------------------ 첫번째 이미지 -------------------------
<?
$image0 = $view[file][0][file];

$file0= "<img src='$g4[path]/data/file/$board[bo_table]/$image0' width='210' height='210' border='0' align='center' onclick=\"image_viewer('$g4[path]/data/file/$bo_table/$image0')\" style='border:1px solid #cccccc'>";

if ($view[file][0][view]){
echo "<a href='javascript:;'>$file0</a>";
}else{
echo "<IMG src='{$board_skin_path}/img/no_image2.gif' width='210' heigth='210' align='center'>";
}
?>



------------------ 2-5 번째 이미지 -------------------------
<?
$imgv_width = '120';  // 가로
$imgv_height = '100'; // 세로

$image1 = $view[file][1][file];
$image2 = $view[file][2][file];
$image3 = $view[file][3][file];
$image4 = $view[file][4][file];

$file1= "<img src='$g4[path]/data/file/$board[bo_table]/$image1' width='$imgv_width' height='100' align='center' onclick=\"image_viewer('$g4[path]/data/file/$bo_table/$image1')\" style='border:1px solid #666666'>";
$file2= "<img src='$g4[path]/data/file/$board[bo_table]/$image2' width='$imgv_width' height='100' align='center' onclick=\"image_viewer('$g4[path]/data/file/$bo_table/$image2')\" style='border:1px solid #666666'>";
$file3= "<img src='$g4[path]/data/file/$board[bo_table]/$image3' width='$imgv_width' height='100' align='center' onclick=\"image_viewer('$g4[path]/data/file/$bo_table/$image3')\" style='border:1px solid #666666'>";
$file4= "<img src='$g4[path]/data/file/$board[bo_table]/$image4' width='$imgv_width' height='100' align='center' onclick=\"image_viewer('$g4[path]/data/file/$bo_table/$image4')\" style='border:1px solid #666666'>";

if ($view[file][1][view]){
echo "&nbsp;&nbsp;&nbsp;<a href='javascript:;'>$file1</a>";
}else{
echo "&nbsp;&nbsp;&nbsp;<IMG src='{$board_skin_path}/img/no_photo1.gif' width='$imgv_width' heigth='$imgv_height' align='center'>";
}
if ($view[file][2][view]){
echo "&nbsp;&nbsp;&nbsp;<a href='javascript:;'>$file2</a>";
}else{
echo "&nbsp;&nbsp;&nbsp;<IMG src='{$board_skin_path}/img/no_photo1.gif' width='$imgv_width' heigth='$imgv_height' align='center'>";
}
if ($view[file][3][view]){
echo "&nbsp;&nbsp;&nbsp;<a href='javascript:;'>$file3</a>";
}else{
echo "&nbsp;&nbsp;&nbsp;<IMG src='{$board_skin_path}/img/no_photo1.gif' width='$imgv_width' heigth='$imgv_height' align='center'>";
}
if ($view[file][4][view]){
echo "&nbsp;&nbsp;&nbsp;<a href='javascript:;'>$file4</a>";
}else{
echo "&nbsp;&nbsp;&nbsp;<IMG src='{$board_skin_path}/img/no_photo1.gif' width='$imgv_width' heigth='$imgv_height' align='center'>";
}
?>


일단은 위처럼 구성했습니다.
다만, 보시면 아시겠지만 코드가 반복적인데다가 6-10파일까지도 가변적으로 늘리려면
일일히 또 똑같은 코드를 삽입해서 불필요하게 반복적으로 나열하는게 썩 보기가 좋지 않습니다.
스크립터 올려주신걸 봤는데, 제가 script는 젬병이라서 응용을 못하겠군요 -_- ;;

좀 단순한 코딩을 했으면 좋겠는데 쉽지가 않군요.
<?
        // 파일 출력
 for ($i=0; $i<=count($view[file]); $i++) {

    if($i<1) $wh="width='210' height='210'";
    else $wh="width='120' height='100'";

  if ($view[file][$i][view]){
    $img_file="{$view[file][$i][path]}/{$view[file][$i][file]}";
    $view_img="<img src='$img_file' $wh onclick=\"image_viewer('$img_file')\" style='border:1px solid #666666'>";
    echo "$view_img";
    }
  else{
  if($i<1) $noimg_file="{$board_skin_path}/img/no_image2.gif";
  else $noimg_file="{$board_skin_path}/img/no_photo1.gif";
    echo "<img src='$noimg_file' $wh>";
    }

}

 ?>
위와 같이 해보세요..첨부화일이 가변적이거나 첨부박스 중간에 빠지거나 해도 문제 없습니다
그런데 이미지 사이즈를 강제로 저렇게 해버리면 이미지가 찌그러질텐데요?
늦은시간에 도움을 주셔서 조금 감동먹었습니다. ^^;; 감사합니다.

올려주신 리플로 코드를 줄이는데는 성공했습니다. ^^;;

제가 [1번] 이미지와 [2-5]or [2-환경설정갯수] 의 이미지가 따로 분리된걸 표시하지 않아서
코드를 하나로 해주신걸 분리해서 [1번]이미지만 따로 빼내고 나머지 이미지는 2번부터
처리되게끔 손을 봤습니다 (제대로 된건지...)

그리고 이미지를 ... 썸네일로 하는거 보다 손보기가 좋을거 같아서 그냥 강제로 줄이는쪽을 택했습니다 ^^


그런데 주신 코드를 이용해서 작업을 해보니 알려주신 코드로 작업한 위 첨부된 결과이미지에서 보는바와 같이
뒤에 2개의 '빈이미지(돋보기)'가 함께 출력이 되는 현상이 생기는군요.
현재 환경설정에는 5개까지만 업로드 하도록 설정이 되어 있는데 어디서 튀어나온것인지 알수가 없네요

현재로써는 환경설정에 5개까지만 등록하도록 되어있고 실제로 현재 5개의 이미지만 등록했기 때문에
1번(큰이미지)를 뺀 4개의이미지만 아래에 출력되어야 하는데,
빈이미지(돋보기)2개가 함께 출력이 되는거 같습니다.


알려주신 코드를 이용해서 코딩한 내용은 아래와 같습니다.
글을 보시게 되면 한번더 봐주시길 부탁드립니다 꾸벅~



<!-- //-------------------------------------- 기본정보 start -->
<table align='center' width="100%" cellpadding=0 cellspacing=0 style='border:2px solid #ff9900'>
<col width="70%" />
<col />

<td style='padding:10 10 10 10'>

<div class='view_head'>
<IMG src='<?=$board_skin_path?>/img/vi_mtit01.gif' width='50' height='30' align='absmiddle'>
<span class='view_title'><?=cut_hangul_last(get_text($view[wr_subject]))?></span>
</div>
<div class='line2' style='height:1px; line-height:1px;font-size:1px;'>&nbsp;</div>

<div class='view_head'>
<IMG src='<?=$board_skin_path?>/img/vi_mtit02.gif' width='50' height='14' align='absmiddle'>
<span class='view_list'><? if ($is_category) { echo ($category_name ? "[$view[ca_name]] " : ""); } ?></span>
         
</div>
<div class='line2' style='height:1px; line-height:1px;font-size:1px;'>&nbsp;</div>

<div class='view_head'>
<IMG src='<?=$board_skin_path?>/img/vi_mtit04.gif' width='50' height='14' align='absmiddle'>
<span class='view_list'>
<? if(!$ext4_01 || !$ext4_02) {
echo "등록안됨";
  }else{
echo "<b>". $ext4_00 ."-". $ext4_01 ."-". $ext4_02 ."</b>";
  }
?>
</span>
</div>
<div class='line2' style='height:1px; line-height:1px;font-size:1px;'>&nbsp;</div>

<div class='view_head'>
<IMG src='<?=$board_skin_path?>/img/vi_mtit03.gif' width='50' height='14' align='absmiddle'>
<?
// 링크
$cnt = 0;
for ($i=1; $i<=$g4[link_count]; $i++) {
    if ($view[link][$i]) {
        $cnt++;
        $link = cut_str($view[link][$i], 70);
echo "<span class='view_list'>";
        echo "<a href='{$view[link_href][$i]}' target=_blank>";
echo "<font color='#CC0000'><b>{$link} </b></font></a> ({$view[link_hit][$i]})";
echo "</span>";
    }
}
?>
</div>
<div class='line2' style='height:1px; line-height:1px;font-size:1px;'>&nbsp;</div>

<div class='view_head'>
<IMG src='<?=$board_skin_path?>/img/vi_mtit06.gif' width='50' height='14' align='absmiddle'>
<span class='view_list'>[<?=$ext3_00?>-<?=$ext3_01?>]&nbsp;&nbsp;<?=$ext3_02?> <?=$ext3_03?></span>
</div>
<div class='line2' style='height:1px; line-height:1px;font-size:1px;'>&nbsp;</div>

<div class='view_head'>
<IMG src='<?=$board_skin_path?>/img/vi_mtit07.gif' width='50' height='14' align='absmiddle'>
<span class='view_list'>
<? if($member[mb_level] >= 10) { echo "등록자 : {$view[name]}"; } ?>
<? if ($is_ip_view) { echo "&nbsp;($ip)&nbsp;&nbsp;"; } ?>
등록일 [<?=substr($view[wr_datetime],2,14)?>]
</span>
</div>
<div class='line2' style='height:1px; line-height:1px;font-size:1px;'>&nbsp;</div>

<div align='center' style='margin-top:8px;'>

    <? if ($good_href) {?>
    <a href="<?=$good_href?>" target="hiddenframe"><img src="<?=$board_skin_path?>/img/icon_good2.gif" border='0' align="absmiddle"></a>&nbsp;&nbsp;&nbsp;
    <? } ?>

<? if ($scrap_href) { echo "<a href=\"javascript:;\" onclick=\"win_scrap('$scrap_href');\"><img src='$board_skin_path/img/btn_scrap2.gif' border='0' align='absmiddle'></a> "; } ?>
</div>


</td><td align='center' style='padding:5 0 5 10'>

<!-- 첫번째 이미지 처리 start -----------------// -->
<table cellpadding=0 cellspacing=0><tr><td>

<? // 1파일 출력
    $img_wh = "width='210' height='210'";

  if ($view[file][0][view]){
    $img_file="{$view[file][0][path]}/{$view[file][0][file]}";
    $view_img="<img src='$img_file' $img_wh onclick=\"image_viewer('$img_file')\" style='border:1px solid #666666; cursor:hand'>";
    echo "$view_img ";
  }else{
$noimg_file="{$board_skin_path}/img/no_image2.gif";
    echo "<img src='$noimg_file' $img_wh>";
  }
?>
</td></tr></table>
<!-- 이미지 처리 end -----------------// -->


</td></tr>
</table>
<!-- //-------------------------------------- 기본정보 end -->


<!-- //----------------------------- 이미지정보 start ------------------// -->
<table width="100%" cellspacing="0" cellpadding="0">
<tr>
    <td height="10" align='center' style='word-break:break-all; padding:10px; border:0px solid #cccccc;' bgcolor=''>

<?  // 파일 출력
 for ($i=1; $i<=count($view[file]); $i++) {

    $img_wh = "width='120' height='100'";

  if ($view[file][$i][view]){
    $img_file="{$view[file][$i][path]}/{$view[file][$i][file]}";
    $view_img="<img src='$img_file' $img_wh onclick=\"image_viewer('$img_file')\" style='border:1px solid #666666'>";
    echo "$view_img ";
    }
  else{
$noimg_file="{$board_skin_path}/img/no_photo1.gif";
    echo "<img src='$noimg_file' $img_wh>";
    }
}
?>
</td>
</tr>
</table>
<!-- //----------------------------- 이미지정보 end ------------------// -->
2-5중 한개의 이미지를 삭제헤봤지만 2-4번이미지는 남지만
뒤에 '2개의 빈이미지'는 그대로 남아 있습니다. 아무리 해봐도 뭐가 잘 안되는군요
$i<=count($view[file]); ==> $i<count($view[file]);
원본 소스를 복사한 건데 노이미지를 출력하지 않을 때는 이상없으나 노이미지를 출력하면
카운터가 하나더 계산되므로 문제가 있네요..등호를 빼버리세요

그렇더라도 노이미지가 하나더 나오는건 이상하네요
[1번이미지]출력부분과 [2-5번이마지]의 출력부분을 나눠놓고서는 복사해서 수정하는 바람에
변수명이 같은게 있는걸 발견해서 일단 모두 수정했습니다.


<!-- 첫번째 이미지 처리 start -----------------// -->
<table cellpadding=0 cellspacing=0><tr><td>

<? // 1파일 출력
    $img01_wh = "width='210' height='210'";

  if ($view[file][0][view]){
    $img01_path="{$view[file][0][path]}/{$view[file][0][file]}";
    $img01_view="<img src='$img01_path' $img01_wh onclick=\"image_viewer('$img01_path')\" style='border:0px solid #666666; cursor:hand'>";
    echo "$img01_view";
  }else{
$noimg01_path="{$board_skin_path}/img/no_image2.gif";
    $noimg01_view="<img src='$noimg01_path' $img01_wh style='border:0px solid #666666;'>";
    echo "$noimg01_view";
  }
?>
</td></tr></table>
<!-- 이미지 처리 end -----------------// -->


....
....
....

<!-- //----------------------------- 2-3 이미지정보 start ------------------// -->
<?  // 파일 출력
for ($i=1; $i<count($view[file]); $i++) {

    $img_wh = "width='120' height='100'";

  if ($view[file][$i][view]){
    $img_file="{$view[file][$i][path]}/{$view[file][$i][file]}";
    $view_img="<img src='$img_file' $img_wh onclick=\"image_viewer('$img_file')\" style='border:1px solid #666666; cursor:hand;'>";
    echo "$view_img ";
    }
  else{
$noimg_file="{$board_skin_path}/img/no_photo1.gif";
    $no_img="<img src='$noimg_file' $img_wh style='border:1px solid #666666; cursor:hand;'>";
    echo "$no_img ";
    }
}
?>





... 말씀하신 대로 노이미지가 하나더 나오는건 당체 잡아내지를 못하겠군요
... 이게 도대체 어디서 튀어 나오는건지 정말 알수가 없네요...
... 그리고 for 문의 규칙상 $i=1로 시작되면 $i<= ...이 맞는거 같은데
... 알려주신대로 하니 일단 이미지한개가 사라지긴 했습니다만, 이해도 좀 안되고.. -_- ;;


신경써서 관심가져주신거 고맙습니다. ^^;; ... 시간을 너무 뺏은거 같아 미안하기도 하구요.
나이가 드니.. 건망증만 늘어나는거 같습니다..밤에 잠을 설쳤더니 머리가 띠~~~잉 하네요 ㅋ~
어휴~~~ 잡아냈습니다. ㅎ~

정답은...

for ($i=1; $i<(count($view[file])-1); $i++) { 
또는
for ($i=1; $i<=(count($view[file])-2); $i++) {

........... 그런데 아직 위와 같은 for문이 왜(why) 정답인지는 이해를 못하고 있다는거....ㅋㅋ~

어쨋던 알려주신 리플들이 많은 도움이 되었습니다. 정말 고맙습니다. ^^ ;; 좋은 하루되세요.
음....이게.....어째 하다 보니까...방향이 좀 틀어진거 같습니다. (스킨하나땜에 또 날밤새게 생겼군요..-_-)

원래의 의도는 ...
게시판환경설정에서 파일의 업로드갯수(bo_upload_count)가 지정된 만틈 view.skin.php에서 보여지도록 하는거였습니다.
나의 첫번째 댓글에서 보듯이 일일히 반복되는 구문을 좀 간단히 만들고자 하는거였지요.

예를들어 환경설정에서 업로드갯수가 5개로 지정되어 있다면,
2개 또는 3개...의 이미지만 등록하더라도 view.skin.php에서는 일단 [no이미지]까지 포함해서 5개모두가 보여지도록 하는거였는데
한부분에 집착을 하다가 (제 질문도 정확하지 않았고..)보니, 결국 원래의 코드와는 별 차이가 없어져 버린거 같네요.


그리고 현재 중간에 도움주신 글을 바탕으로 해서
for ($i=1; $i<(count($view[file])-1); $i++) {  ... 를 사용함에 있어서
등록된 이미지가 나오는것은 정상적으로 출력이 되고 있습니다.
중간에 하나를 빼면 뺀 자리에  $no_img'가 출력이 되고요.
다만, 원래의도했던 업로드 총갯수만큼 noimg를 포함해서 보여주지 못하는건 여전히 문제군요.


일단 for문과 관련해서 LOOP의 처리가 이렇게 되는듯 합니다

일단 파일을 4개를 업로드 했다고 가정하죠. 그럼 총4개가 등록된겁니다.
그리고 for문에서만 보면 일단 첫파일은 빠지는게 맞으니 2번째 파일부터 시작되어서 총등록된 갯수를 구하는거니까, count($view[file])-1 ..... 즉 4개의 파일중에 2번째 부터 시작해서 4번까지니까 총3개만 출력되는게 맞지 않나 봅니다.

어차피 count($view[file]) 라는것은 총등록된 파일의 갯수(4)를 말하는거니까
1번파일을 하나 빼줘야 하는게 맞는거 같습니다. ??? !!!!

ps. 현재까지 작업된 view.skin.php 위에 첨부해뒀습니다.
하핫..겨우 마흔 넘어놓고 그래요?
하긴 저도 젊은 나이에 컴 잡고 밤샘하면 와이프가 좋아하지않았네요..
지금은 밤샘을 하던말던 상관도 하지않지만..ㅎㅎ
count($view[file]) 하면 첨부 갯수 보다 +1 된 값이 나오게 되어있습니다 착각을 했네요

$view[file] 배열에는 첫번째에 첨부갯수가 들어있습니다

$view[file][count]
$view[file][0]
$view[file][1]
.
.
.이렇게 배열이 되어있으니 당연히 첨부갯수보다 1 크다는 걸 깜빡했네요
애초에 count($view[file]) 대신에 $view[file][count]를 사용했으면 헷갈리지않았을텐데..

그리고 의도하는 바가 첨부 갯수만큼 나오는 것이 아니고 관리자메뉴에서 지정한 만큼
나오게 하는 것이라면
count($view[file]) 대신 (int)$board[bo_upload_count] 를 사용하면 됩니다
이건 -1 해주면 안됩니다

for ($i=1; $i< (int)$board[bo_upload_count]; $i++) 이렇게 하세요
이~~~~~~~~ 야......드디어 되네요 ^^;;;
정~~~~~~~~~~말 고맙습니다....저보다 연배셨군요.....감사합니다. ^^;;

정말 큰 도움됐습니다. 그리고 정말~~ 고마운건 끝까지 포기안하고 제질문의 완성을 도와주신점입니다.
사실 질문이 계속 길어지는거 같아서 내심 죄송해서 눈치가 보였었거든요.. ^^

긴 글에 관심가져 주셔서 다시한번 감사말씀 전합니다. 꾸벅~~

그리고 그냥 통상적으로 count($view[file]) 로 파일을 불러오기에서 설명하신것처럼,
내부 $view[file][count] 가 배열속에 있다는건 오늘 처음알게 되었네요...(왜 그런지는 몰겠지만..)
그래서 view.skin.php에 for문속에 다시 if문으로 해석되는 부분이 있었군요 ^^;;
(위에 출력이 되기에 대충끼워 맞췄던 제 추리는 엉터리였군요..ㅋ~ ^^)


마지막으로..그냥 처음부터  for ($i=0; $i<=$view[file][count]); $i++) {  ...이런식으로 구문이
되어 있으면 될텐데... 아래 두 구문이 무슨 차이가 있는걸까요? ...제말뜻은 위에서 학인한바같이
이미지를 불러오는데 있어서 궂이 1)번처럼 사용해야할 이유가 있나 싶네요.


1) for ($i=0; $i<=count($view[file]); $i++) {  ....... ?
 
2) for ($i=0; $i<=$view[file][count]); $i++) {  .........?



뷰스킨에서 이미지처리 변수만들때 도움주신 방법이 코드줄이는데 있어서 앞으로 큰 도움이 될거 같습니다.
맨위쪽에 보듯 거의 30줄가까이 줄였네요.... 좋은 밤 되세요 ^^:;
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

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