웹마스터 팁
정사각형 썸네일은 안녕~ 직사각형 썸네일을 만들어보자
2007.09.19 19:05
참고 : 아래의 getThumbnail 함수는 zbxe/modules/document/document.item.php 에 위치합니다
===================================================================
function getThumbnail($width = 80,$height = 80) {
// 문서의 이미지 첨부파일 위치를 구함
$document_path = sprintf('./files/attach/images/%d/%d/',$this->get('module_srl'), $this->get('document_srl'));
if(!is_dir($document_path)) FileHandler::makeDir($document_path);
// 썸네일 임시 파일명을 구함
$thumbnail_file = sprintf('%sthumbnail_%d.jpg', $document_path, $width);
// 썸네일이 있더라도 글의 수정시간과 비교해서 다르면 다시 생성함
if(file_exists($thumbnail_file)) {
$file_created_time = date("YmdHis",filemtime($thumbnail_file));
$modified_time = $this->get('last_update');
if($modified_time > $file_created_time) @unlink($thumbnail_file);
}
if(file_exists($thumbnail_file)&&filesize($thumbnail_file)<1) return;
// 썸네일 파일이 있으면 url return
if(file_exists($thumbnail_file)) return Context::getRequestUri().$thumbnail_file;
// 생성 시작
FileHandler::writeFile($thumbnail_file, '', 'w');
// 첨부파일이 있는지 확인하고 있으면 썸네일 만듬
$oFile = &getModel('file');
$file_list = $oFile->getFiles($this->document_srl);
if(count($file_list)) {
foreach($file_list as $file) {
if($file->direct_download!='Y') continue;
if(!eregi("(jpg|png|jpeg|gif)$",$file->source_filename)) continue;
$filename = $file->uploaded_filename;
if(!file_exists($filename)) continue;
FileHandler::createImageFile($filename, $thumbnail_file, $width, $height, 'jpg');
if(file_exists($thumbnail_file)) return Context::getRequestUri().$thumbnail_file;
}
}
// 첨부파일이 없으면 내용에서 추출
$content = $this->get('content');
preg_match_all("!http:\/\/([^ ^\"^']*?)\.(jpg|png|gif|jpeg)!is", $content, $matches, PREG_SET_ORDER);
for($i=0;$i<count($matches);$i++) {
$src = $matches[$i][0];
if(strpos($src,"/common/tpl")!==false || strpos($src,"/modules")!==false) continue;
break;
}
$tmp_file = sprintf('%sthumbnail_%d.tmp.jpg', $document_path, $width);
if($src) FileHandler::getRemoteFile($src, $tmp_file);
else {
FileHandler::writeFile($thumbnail_file,'');
return;
}
FileHandler::createImageFile($tmp_file, $thumbnail_file, $width, $height, '+
'+
'jpg');
@unlink($tmp_file);
return Context::getRequestUri().$thumbnail_file;
}
현재는 getThumbnail 함수를 통해 썸네일을 추출할 경우 모두 정사각형으로만 추출이 되도록 되어 있습니다.
제로님이 왜 이렇게 고정하셨는지는 알 수 없습니다만 때에 따라 직사각형 모양의 썸네일 추출도 필요한
경우가 있어 고심하다가 소스를 수정해서 사용하는 방법을 찾게 되었습니다.
* 위 소스의 파일 위치 와 이름 : ..zbxe/modules/document/codument.item.php
위의 소스 가운데 반전된 부분만 추가 또는 수정하신 후에 스킨 소스중 아래의 부분을
형식 : {$document->getThumbnail(<원하시는 가로 사이즈>)}
예제 : {$document->getThumbnail(100)} => 가로 100에 세로 100 사이즈 썸네일이 생성됩니다.
아래와 같이 원하시는 사이즈로 지정 후 사용하시면 됩니다.
형식 : {$document->getThumbnail(<원하시는 가로 사이즈>,<원하시는 세로 사이즈>)}
예제 : {$document->getThumbnail(100,85)} => 가로 100에 세로 85 사이즈 썸네일이 생성됩니다.
필요하셨던 분들은 한번 써보시구요. 단, 버전업 되면 위의 소스가 덮어써져 버리므로 그때마다
다시 수정을 해줘야 하는 불편함이 있습니다. 이점 유의하세요. 혹시라도 수정 후 문제가 생기신다면
다시 원래의 소스로 본 파일만 원복하시면 됩니다~
적용해보시고 궁금한 점이나 안되는 부분있으면 덧글로 남겨주세요~ 도움이 되시길 바랍니다.
댓글 8
제목 | 글쓴이 | 날짜 |
---|---|---|
(게시판) 목록에 확장 변수를 출력하기 [18] | Simulz | 2007.09.08 |
메인 페이지 링크 www. 주소 표시, 로그인 링크 문제.... [5] | 마덴나 | 2007.09.08 |
메뉴와 연결된 xe의 page에 iframe을 사용해서 제로보드4 게시판을 불러들였습니다 [2] | 바람처럼.. | 2007.09.14 |
2차,3차 메뉴가 좌측으로 일렬로 되어있어 구분이 잘 안됩니다,이럴 때~ [7] | *제트* | 2007.09.16 |
정사각형 썸네일은 안녕~ 직사각형 썸네일을 만들어보자 [8] | 매니안 | 2007.09.19 |
새 공지창 띄우기 [22] | *제트* | 2007.09.20 |
(포인트 모듈) 추가 정보 출력 [8] | Simulz | 2007.09.20 |
공지창 소스 [2] | 열린 공간 | 2007.09.21 |
<수정>사이트 메신저 회원 연동해서 사용하기.... [3] | 녀석참 | 2007.09.22 |
제로보드 XE 설치후에 제대로 작동 안하는 원인은... | 독도2005 | 2007.09.22 |
(모듈 설정) 모듈 목록을 추가하여 설정을 쉽고 빠르게 #2, 2007-09-28 [3] | Simulz | 2007.09.23 |
로고에 플래시파일 사용하기 [2] | 팔공산 | 2007.09.26 |
회원가입 약관 관련. [2] | rickey | 2007.09.28 |
페이지에 설문 조사 넣기 [2] | 지허 | 2007.10.01 |
iframe사용시 세로길이 자동 조정되게 하기 [7] | 팔공산 | 2007.10.04 |
xe 폴더를 어딘가로 이전했을 때 로그인이 안되는 경우... [2] | preware | 2007.10.05 |
(회원 정보) 작성 글 수, 댓글 수를 보여주기 (#4, 2007-10-13) [7] | Simulz | 2007.10.06 |
댓글 등록시 하드에 있는 이미지를 쉽게 웹에 링크시키는 프로그램 [6] | 팔공산 | 2007.10.07 |
"회원 추가" 를 "회원 가입" 으로 .. [9] | 디키스 | 2007.10.12 |
상단에 로그인 회원가입 등 메뉴 넣기 (id/pw찾기 추가) [7] | mireu | 2007.10.16 |