웹마스터 팁
정사각형 썸네일은 안녕~ 직사각형 썸네일을 만들어보자
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
-
xe촙5
2007.09.19 19:34
-
매니안
2007.09.19 19:51
네, 제가 설명을 잘 못해서 죄송...
수정된 부분은 반전시켜서 표현한 3가지 부분입니다.
1. 278번째 라인
function getThumbnail($width = 80) 를
function getThumbnail($width = 80, $height = 80) 로 추가변경
2. 312번째 라인
FileHandler::createImageFile($filename, $thumbnail_file, $width, $width, 'jpg'); 를
FileHandler::createImageFile($filename, $thumbnail_file, $width, $height, 'jpg'); 로 변경
3. 335번째 라인
FileHandler::createImageFile($tmp_file, $thumbnail_file, $width, $width, 'jpg'); 를
FileHandler::createImageFile($tmp_file, $thumbnail_file, $width, $height, 'jpg'); 로 변경
해당 부분을 수정하시고 나머지는 스킨에서 $document->getThumbnail(가로,세로) 부분을 수정해서 사용하시면 됩니다. -
xe촙5
2007.09.19 21:50
아하 제로님은 $width, $width 이렇게 넣었었군요!!!
그러면 저거를.... 함수를 따로 하나 만드는 것이 더 낫겠는데요
고대로 복사해서 ㅋㅋ
그래서 호환성에 문제가 없도록 해서 배포해도 될 듯 합니다. -
xe촙5
2007.09.19 21:54
메니안님 저번에 제가 질답게시판에 올린 게시판 통합관련해서 좀 같이 연구했으면 하는데요. 전 왕초보라서... -
파파민
2007.09.20 12:46
좋은팁 감사합니다.
덕분에 칭구들이 예쁘졌습니다. ^^ -
매니안
2007.09.20 16:51
본 팁은 0.1.6 업데이트에서 제로님이 적용을 해주셨습니다. 따라서 별도의 소스수정을
하실 필요없이 그대로 사용하시면 됩니다. -
후니짱
2007.10.04 10:42
그럼 세로 사진의 경우에는 더 짤리는 것 아닌가요? -
오준근
2008.01.14 11:33
100%(원본크기)로 보여주게 하려면 어떻게 해야 하나요? 흑흑...
꼭! 원본크기로 나타나야 하는데요...
답글 부탁합니다.
제목 | 글쓴이 | 날짜 |
---|---|---|
MRTG에서 네트워크및 CPU, 메모리점유율을 기록하기 | ひりゅう. | 2014.07.05 |
XE 알림센터 Lite 사용시에 쪽지나 호출에 대해서만 알림음을 적용하기 [17] | SeungXE | 2014.07.06 |
외부 페이지에서 회원 extra_vars 변수 가져오기 [1] | Happyphp | 2014.07.09 |
편리한 안드로이드 크로스 브라우징 테스트 Tip - 안드로이드 가상화 | AJKJ | 2014.07.09 |
lang.xml 파일 다이어트 자동화 [5] | 산하2 | 2014.07.09 |
SocialXE 관련 사용팁 적용 수정 파일 [3] | 휘즈 | 2014.07.13 |
댓글등록에 단축키 사용하기 | ひりゅう. | 2014.07.15 |
모바일(또는 textarea형)에서 댓글 수정시 줄바꿈 유지되도록 수정 [2] | sejin7940 | 2014.07.17 |
게시판 글 엑셀로 출력하기(확장변수 포함) [15] | 한이73 | 2014.07.17 |
회원 비밀번호 수정시 자동으로 로그아웃 되게 하는 방법 [4] | sejin7940 | 2014.07.18 |
Windows10 에서 IIS + mysql + PHP 설치 [10] | HSJI | 2014.07.21 |
간단하게 외부 SMTP 로 인증메일 보내기. [1] | AJKJ | 2014.07.22 |
php로 간단하게 신규쪽지(읽지않은쪽지) 표시해주기 [2] | 졸라맨 | 2014.07.23 |
빈공간 더블 클릭시 상하 이동 스크립트 | socialskyo | 2014.07.23 |
[초보팁] .htaccess 파일을 이용하여 여러가지 주소 한 주소로 리다이렉트 하기 ( 주소 통합 ) [5] | 태풍_님 | 2014.07.23 |
아이디 첫글자에 숫자 허용 [2] | wooildang | 2014.07.24 |
xe module, sample 생성기 [9] | 천재ㅐ재 | 2014.07.24 |
CURL 등 리퀘스트가 느리다고 생각될때 [1] | 銀童 | 2014.07.25 |
게시판 데이터 일괄 삽입 방법 [1] | Happyphp | 2014.07.26 |
/XE/떼어 내기 방법... | 꿈섬 | 2014.07.27 |
그것이 아니면..... 코드의 변경전과 변경후로 명기해 주시면 더 좋을 것 같습니다.