배열에 이미지 Height값을 저장 후, 이미지를 불러올 때 배열에 저장된 height값을 적용하려고 합니다.

배열에 이미지 Height값을 저장 후, 이미지를 불러올 때 배열에 저장된 height값을 적용하려고 합니다.

QA

배열에 이미지 Height값을 저장 후, 이미지를 불러올 때 배열에 저장된 height값을 적용하려고 합니다.

본문

http://sir.co.kr/bbs/board.php?bo_table=g4_skin&wr_id=150642&sca=%EA%B0%A4%EB%9F%AC%EB%A6%AC

를 참고해서 스킨 페이지를 제작 중입니다.


<?
$size = Array();
$imgPath = Array();
for ($i=0; $i<count($list); $i++) 
{ 
    $title = "자세히보기";
    $content = cut_str(get_text($list[$i][wr_content]), 180);
    $subject = cut_str(get_text($list[$i][subject]), 100, '...');
    $img_width  = '160';        // 이미지 개당 가로크기 
    $img_height = '120';        // 이미지 개당 세로크기 
    $img = "$g4[path]/data/file/$bo_table/".urlencode($list[$i][file][0][file]);
    $img2 = "$g4[path]/data/file/$bo_table/".urlencode($list[$i][file][1][file]);
    
    $size[$i] = getimagesize($img2); //지금 리스트 페이지의 가장 마지막 이미지 height값만 받아오고 있음.
    
    if (!file_exists($img) || !$list[$i][file][0][file])
        $img = "$board_skin_path/img/no_image.gif";
    if ($is_admin)
        $view_href = "$g4[bbs_path]/board.php?bo_table=$bo_table&wr_id={$list[$i][wr_id]}";
    else 
        $view_href = "#";
    $checkbox = "";
    if ($is_checkbox)
        $checkbox = "<input type=checkbox name=chk_wr_id[] value='{$list[$i][wr_id]}'>";
    $tr = ""; 
    if ($i && $i%$board[bo_gallery_cols]==0) 
        $tr = "</tr><tr>"; 
    echo "$tr"; 
    echo <<<HEREDOC
    <td width="{$td_width}%" valign="top" align="center" >
<table  width="200" height="100" border="0" cellpadding="0" cellspacing="0">
    <tr>
        <td align="center">
            <img src="{$img}" width='{$img_width}' height='{$img_height}' border="0" title="$title" style="border:0px solid #000000;cursor:pointer;" onClick="view_img('$img2')">
        </td>
    </tr>
    <tr>
        <td align="center" onClick="height_img('$img2')" style="cursor:pointer;">{$checkbox} {$subject}</td>
    </tr>
</table>
    </td>
HEREDOC;
}
// 나머지 td 를 채운다.
if ($i == 0)
    echo "<td colspan='$board[bo_gallery_cols]' height=50 align=center>게시물이 없습니다.</td>";
?>


위 코드와 같이, 리스트 페이지에서 $img를 클릭하면 $img2가 리스트페이지에 포함된 뷰페이지에 출력됩니다.

그런데, 뷰페이지에서 출력되는 부분에


<table  width="800"  border="0" cellpadding="0" cellspacing="0" align="center" >
    <tr>
        <td width="800" height="<?= $size[0][1] ?>" Style="background:#fff;" id="contents"><img class="main_img" src="<?=$list[0][file][0][path]?>/<?=$list[0][file][1][file]?>" width="800" height="<?= $size[0][1] ?>" id="main_img"></td>
    </tr>
</table>


Heigth부분에 $size[1]로 저장해둔 이미지의 Height값을 적용하는데, 각 리스트마다 4개씩 표시되야 되는데

$size[index][1] 값을 어떻게 반영해야 되는지 모르겠어서 이렇게 글을 올립니다.

많은 분들의 조언 부탁드립니다.

이 질문에 댓글 쓰기 :

답변 3

같은 질문을 몇번 한 것 같은데 무슨 말인지 알아듣지를 못해서 답변을 하지못했습니다

스킨 주소를 저렇게 알려주니 소스를 보고 무슨 작업을 하려는 코드인지 금방 이해할 수 있겠네요

모름지기 질문은 남이 알아먹을 수 있게 해야 제대로 답변을 얻을 수 있을 것입니다

--스킨을 다운 받아서 소스를 보고서 답변하는 일은 하지않습니다만

답답해보여서 스킨을 다운 받아보고 답변 드립니다


뷰페이지에서 출력되는 부분에<--- 라고 되어있는 부분 height는 스킨을 보니 for문 위쪽에 있는데

처음 페이지가 열릴 때 한번 설정 되고 그 이후에는 변경할 이미지 주소만 전달해서 출력하고 있으니 바뀔리가 없습니다

게다가 $size[0][1] 값은 구하기도 이전에 나오니 아예 값이 없습니다

해당 페이지에서 소스보기해보면 height=""<--이와 같이 나온 것을 알 수 있습니다


각설하고

$size[$i] = getimagesize($img2); <-- 이건 필요없는 실행입니다. 삭제하세요

각 이미지 사이즈는 이미 구해져있습니다

if (!file_exists($img) || !$list[$i][file][0][file])<-- 이것도 이미지 체크를

불필요하게 HDD를 뒤적여서 하고 있습니다

if(!$list[$i][file][0][view] || !$list[$i][file][1][view]) <----이렇게 수정하세요


그런데 이미지 출력 부분에 width="800" height="<?= $size[0][1] ?>" 이렇게 되어잇는데

의도하는 것이 뭔가요?

가로는 고정 시키고 세로만 원본 사이즈로 보여주겠다는 것인가요?


onClick="view_img('$img2')"-->수정

onClick="view_img('$img2',{$list[$i][file][1][image_width]},{$list[$i][file][1][image_height]})"> <--이것이 이미 구해져있는 가로, 세로 크기입니다


function view_img(img, ww,hh){

 $('#main_img').attr('src', img);

 $('#main_img').css('height',hh); //가로는 800고정, 높이를 원본으로 할 때

//  $('#main_img').css({'width':ww,'height':hh}); //가로 세로 모두 원본크기로 변경할 때

}


//가로 800 고정, 세로는 자동 조절 -- 이 경우는 onClick="view_img(~~)는 수정할 필요없음

function view_img(img){

 $('#contents').html("<img src="+img+" width=800>");

}



이미지 출력 부분에 width="800" height="<?= $size[0][1] ?>" 이렇게 되어잇는데

의도하는 것이 뭔가요? 가로는 고정 시키고 세로만 원본 사이즈로 보여주겠다는 것인가요

> 네, 페이지의 가로는 고정되어있고, 세로 사이즈가 유동적인 게시글을 올리는 형식이로 제작이 되어서입니다.


기본실력이 부족하다보니 불편을 끼친 거 같아서, 죄송하고 답변해주셔서 감사합니다.

균이님이 정리는 다 했으니 숟가락 하나 살짝.. ^^;
가로 800에 세로는 비율맞춰서 알아서 출력되게끔 하고자 하신거라면 width="800"는 그대로 두시고 그냥 height 속성을 빼버리시면 될겁니다~
답변을 작성하시기 전에 로그인 해주세요.
전체 55
QA 내용 검색

회원로그인

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