이미지// 썸네일 경로 문의드립니다. > 그누4 질문답변

그누4 질문답변

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

이미지// 썸네일 경로 문의드립니다. 정보

이미지// 썸네일 경로 문의드립니다.

본문

전제1)
board skin이 아닌, 별도로 만드는 스킨입니다.
(스크랩된 내용물 중 사용자가 앨범이라는 항목에 체크한 것을 모아서 보여주는 스킨입니다.)

전제2)
게시판에서 에디터로 올린 이미지를 썸네일 추출하려고 합니다.
(스킨자료실의 고수님들의 소스를 응용해서 만들고 있습니다.)

다음과 같이 소스를 넣어, 썸네일 추출은 성공했습니다.

-----------------------------------------------------------------------------------------
//썸네일 생성
$thumbfile = "";
    $thumb = $thumb_path.'/'.$list[$i][wr_id];
    // 썸네일 이미지가 존재하지 않는다면
    if (!file_exists($thumb)) {
        $file = $list[$i][file][0][path] .'/'. $list[$i][bf_file];
        // 업로드된 파일이 이미지라면

//
$list[$i][bf_file]는 $list[$i][file][0][file]
// 스크랩에서는 $list[$i][file][0][file] 관련 쿼리가 없어서, 임의로 쿼리를 설정하여 명명함

        if (preg_match("/\.(jpg|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][wr_id], $thumb_quality);
            chmod($thumb_path.'/'.$list[$i][wr_id], 0606);

// ↑ 첨부파일 이미지 썸네일 추출은 문제가 없습니다. (참고로 올림)

} else { // ↓ 여기부터 에디터 이미지 썸네일 추출
   $edit_img = $list[$i]['wr_content'];
   if (eregi("data/geditor/[^<>]*\.(gif|jp[e]?g|png|bmp)", $edit_img, $tmp)) { //지에디터 사용
    $file = '../' . $tmp[0]; // 파일명
    $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][wr_id], $thumb_quality);
    chmod($thumb_path.'/'.$list[$i][wr_id], 0606);

// $thumb_path.'/'.$list[$i][wr_id] <--- 에디터 이미지의 썸네일 경로 를 인식하지 못함
-----------------------------------------------------------------------------------------

앞에서 말씀드린 것처럼 썸네일은 추출하는데,
첨부파일로 올린 경우는 썸네일 경로가 잘 나타나는데,
에디터로 올린 경우에는 썸네일 경로를 인식하지 못합니다.

첨부파일로 올린 경우 : data/fille/B03/thumb/38
에디터로 올린 경우 : data/fille//thumb/38 (썸네일이 FTP상에서 data/file/thumb에 위치)

그냥 놔두어도 썸네일은 출력되지만,
썸네일 넘버(38)가 $wirte_table의 wr_id이기 때문에,
여러 게시판에서 썸네일을 추출하다보면 wr_id가 겹치게 될 것입니다.

data/fille//thumb/38 에서 // 사이에 write 테이블 이름이 안 들어가는 문제......
해결하고 싶습니다.

고수님들의 도움을 부탁드립니다. (__)

  • 복사

댓글 전체

$thumb_path 값이 잘못 설정이 된 것 같은데요.

일반적으로 $thumb_path 값 설정은 아래와 같이 합니다.

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

참고하세요..
텍와이드님 답변 감사합니다.
말씀을 뵙고, 혹시나 해서 확인해 봤더니 제가 쿼리 설정을 잘못했더군요.
$bo_table을 [board_file_table]에서 불러오게 설정했으니.....ㅠㅠ

바로 수정해서 정상으로 돌려놓았습니다. 감사드립니다.^^ (__)
아이고 가영아빠님~~~~~ ㅠㅠㅠ
곧 찾아뵙고 자초지종을 말씀드리겠습니다.
이미 일현님께는 말씀을 드렸지요.
수일만 기다려주십시오. (__)
© SIRSOFT
현재 페이지 제일 처음으로