포럼
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
외부 이미지의 썸네일 생성방식 변경
2014.06.16 03:14
티스토리의 이미지 링크를 이용할경우 썸네일 생성이 되지 않더군요.
그래서 외부 이미지의 썸네일 생성과정을 살펴보니 모든 src를 검색 후 다시 확장자를 검사해서 이미지 파일인경우 썸네일 생성을 시도하는 형식으로 생각 됩니다.
그리고 첨부파일의 처리부분에는 없는 썸네일의 최대 사이즈를 제한하는 조건문도 존재하네요 @.@
그래서 외부 이미지의 썸네일 생성 부분을 아래처럼 수정해 봤는데 문제 없을지 의견좀 부탁 드립니다. 그리고 외부 이미지의 썸네일 생성과정에만 존재하는 최대 사이즈 제한 부분은 왜 있는것일까요?
현재:
$content에서 src 태그를 모두 검색 후 이미지 파일이 있을경우 썸네일 생성시도.
의문: 원본 이미지보다 큰 사이즈의 썸네일 생성이 불가능 하도록하는 조건문이 있음.
이미지 파일 판단 기준: 확장자가 다음중 하나이면 이미지 파일 (jpg, png, jpeg, gif, bmp)
수정:
$content에서 img 태그를 모두 검색 후 썸네일 생성시도.
원본 이미지보다 큰 사이즈의 썸네일 생성을 막는 코드 삭제
이미지 파일 판단 기준: img 태그를 검색 했으므로 무조건 이미지파일로 판단
개선사항:
확장자가 없는 외부 이미지의 썸네일도 생성 가능. 예) 티스토리의 이미지 링크
modules\document\document.item.php
// If not exists, file an image file from the content if(!$source_file) { $content = $this->get('content'); $target_src = null; preg_match_all('/<\s*img[^>]*src\s*=\s*["\']?([^"\']*)/i', $content, $matches, PREG_SET_ORDER); $cnt = count($matches); for($i=0;$i<$cnt;$i++) { $target_src = trim($matches[$i][1]); if(preg_match('/\/(common|modules|widgets|addons|layouts)\//i', $target_src)) continue; else { if(!preg_match('/^(http|https):\/\//i',$target_src)) $target_src = Context::getRequestUri().$target_src; $tmp_file = sprintf('./files/cache/tmp/%d', md5(rand(111111,999999).$this->document_srl)); if(!is_dir('./files/cache/tmp')) FileHandler::makeDir('./files/cache/tmp'); FileHandler::getRemoteFile($target_src, $tmp_file); if(!file_exists($tmp_file)) continue; else { $source_file = $tmp_file; $is_tmp_file = true; break; } } } }