사진용량 줄이는방법 없나요??
본문
큰 사진 용량을 게시판에 첨부해서 화면출력하면
정해진 사진용량으로 줄어서 보여지는 방법없을까요?
답변 2
불당썸을 이용하여 업로드시 이미지 용량을 줄여 업로드 하는 방법입니다.
원리는 간단합니다.
1. 글을 등록후 등록된 글에 대한 이미지(첨부 & 에디트 삽입 이미지, 링크 이미지 제외) 파악
2. 이미지가 있으면, 이미지 주소를 가져와 지정한 크기보다 크면 불당썸으로 썸네일 생성
3. 생성한 썸네일을 원본이미지로 복사(원본이미지 썸네일 이미지로 변경됨)
4. 복사후 생성한 썸네일 삭제..끝
적용방법은 아래 코드를 스킨 내 write_update.tail.skin.php 에 넣어 주시면 됩니다.
(참고로 스킨 내에 파일이 없으면 만들어 주시면 됩니다.)
//-----------------------------------------------------
//이미지 최대 폭(px) 지정 - 이 크기를 넘어가면 리사이즈함
$upimg_size = "1024";
//리사이즈 이미지 퀄리티
$upimg_quality = "90";
//----------------------------------------------------
$img = array();
//첨부파일 불러오기
$attach = get_file($bo_table, $wr_id);
//직접 첨부한 이미지 파악하기
for ($k=0; $k<count($attach); $k++) {
if ($attach[$k][view]) {
$attach_img[$k] = $attach[$k][path]."/".$attach[$k][file];
if(preg_match("/\.(jpg|gif|png)$/i", $attach_img[$k]) && file_exists($attach_img[$k])) {
$img[] = $attach_img[$k];
}
}
}
//에디터에 삽입된 이미지 파악하기
if(preg_match_all("/<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>/i", $wr_content, $match)) {
for ($k=0; $k<count($match[0]); $k++) {
if(preg_match('/data\/cheditor4\/[^<>]*\/[^<>]*\.(jpg|gif|png)/', $match[0][$k], $tmp_img)) {
list($org_img) = explode("\"",$tmp_img[0]);
if(file_exists($g4[path]."/".$org_img)){
$img[] = $g4[path]."/".$org_img;
}
}
}
}
if(count($img) > 0) {
// 불당썸 불러오기
@include_once($g4[path]."/lib/thumb.lib.php");
for ($i=0; $i<count($img); $i++) {
if(file_exists($img[$i])) {
$size = @getimagesize($img[$i]);
// 이미지 파일이 아니거나 폭이 같거나 작은 경우 통과
if (!$size[0] || $size[0] <= $upimg_size) continue;
// animated gif의 경우 통과
if($size[2] == IMG_GIF && is_animated_gif($img[$i])) continue;
$thumb = thumbnail($img[$i], $upimg_size, 0, false, "", $upimg_quality);
if($thumb) {
copy($thumb, $img[$i]);
chmod($img[$i], 0606);
@unlink($thumb);
}
}
}
}
p.s : 1. 원본보관후 대체도 가능하지만 용량 확보가 목적이라 그 부분은 뺐습니다.
2. 불당썸 워터마크 기능을 이용하면 업로드시 워터마크도 미리 다 넣어 줄 수 있습니다.