[1원 짜리 팁]원본의 이미지를 삭제하구 원하는 사이즈만큼 줄여보자
질답에 적는 다는 것이 여기에 쯥 나두....
원본이미지가 width=500이상일때 임의로 원본사이즈를 줄여서
db에 파일명 저장 및 파일을 data/file/bo_table/file 저장이 가능할까요?
이러한 기능이 필요한 이유는 적은 웹상의 공간을 보다 효율적 운영을 위해서
생각하다보니 되더군요...
디카로 찍은 사진들이 너무 커요....그래서 일일이 알씨로 수정할까하다가 썸네일 기능을
활용하면 좋은 결과가 있지 않을까 해서 생각해 보았습니다.
$board[bo_image_width] //------------이부분은 보드관리자 화면에서 결정하구요.
$board[bo_1]//------------------썸네일 이미지 폭
$board[bo_2]//------------------썸네일 이미지 질
write_update.skin.php에 아래와 같이 하니 잘되는군요....
$data_path = $g4[path]."/data/file/$bo_table";
$thumb_path = $data_path.'/thumb';
$sql2=" select * from $g4[board_file_table] where bo_table = '$bo_table' and wr_id = '$wr_id' order by bf_no asc";
$results2 = sql_query($sql2);
for ($d=0; $row2=sql_fetch_array($results2); $d++) { //~~~~~~~~~~~~~~~~~~~~~~~~~~~
if ($_FILES[bf_file][name][$d])
{
$file = $data_path .'/'. $row2[bf_file];
if (preg_match("/\.(jp[e]?g|gif|png)$/i", $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
break;
$rate = $board[bo_image_width] / $size[0];
$height = (int)($size[1] * $rate);
@unlink($data_path.'/'.$row2[bf_file]);
$dst = imagecreatetruecolor($board[bo_image_width], $height);
imagecopyresampled($dst, $src, 0, 0, 0, 0, $board[bo_image_width], $height, $size[0], $size[1]);
// imagepng($dst, $data_path.'/'.$row2[bf_file], $board[bo_2]);
//이부분이 png 압축방식이어서 이미지 커졌나 봅니다.
//아래처럼 하니 줄어드는 것을 확실히 느껴집니다....^^
imagejpeg($dst, $data_path.'/'.$row2[bf_file], $board[bo_2]);
chmod($data_path.'/'.$row2[bf_file], 0606);
//---------->madem님이 알려주신 부분입니다.^^
$bf_size = @filesize(addslashes($file));
$sql = " update $g4[board_file_table]
set bf_filesize = '$bf_size'
where bo_table = '$bo_table' and wr_id = '$wr_id' ";
sql_query($sql);
//---------->madem님이 알려주신 부분입니다.^^
}
}
}
원본이미지가 width=500이상일때 임의로 원본사이즈를 줄여서
db에 파일명 저장 및 파일을 data/file/bo_table/file 저장이 가능할까요?
이러한 기능이 필요한 이유는 적은 웹상의 공간을 보다 효율적 운영을 위해서
생각하다보니 되더군요...
디카로 찍은 사진들이 너무 커요....그래서 일일이 알씨로 수정할까하다가 썸네일 기능을
활용하면 좋은 결과가 있지 않을까 해서 생각해 보았습니다.
$board[bo_image_width] //------------이부분은 보드관리자 화면에서 결정하구요.
$board[bo_1]//------------------썸네일 이미지 폭
$board[bo_2]//------------------썸네일 이미지 질
write_update.skin.php에 아래와 같이 하니 잘되는군요....
$data_path = $g4[path]."/data/file/$bo_table";
$thumb_path = $data_path.'/thumb';
$sql2=" select * from $g4[board_file_table] where bo_table = '$bo_table' and wr_id = '$wr_id' order by bf_no asc";
$results2 = sql_query($sql2);
for ($d=0; $row2=sql_fetch_array($results2); $d++) { //~~~~~~~~~~~~~~~~~~~~~~~~~~~
if ($_FILES[bf_file][name][$d])
{
$file = $data_path .'/'. $row2[bf_file];
if (preg_match("/\.(jp[e]?g|gif|png)$/i", $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
break;
$rate = $board[bo_image_width] / $size[0];
$height = (int)($size[1] * $rate);
@unlink($data_path.'/'.$row2[bf_file]);
$dst = imagecreatetruecolor($board[bo_image_width], $height);
imagecopyresampled($dst, $src, 0, 0, 0, 0, $board[bo_image_width], $height, $size[0], $size[1]);
// imagepng($dst, $data_path.'/'.$row2[bf_file], $board[bo_2]);
//이부분이 png 압축방식이어서 이미지 커졌나 봅니다.
//아래처럼 하니 줄어드는 것을 확실히 느껴집니다....^^
imagejpeg($dst, $data_path.'/'.$row2[bf_file], $board[bo_2]);
chmod($data_path.'/'.$row2[bf_file], 0606);
//---------->madem님이 알려주신 부분입니다.^^
$bf_size = @filesize(addslashes($file));
$sql = " update $g4[board_file_table]
set bf_filesize = '$bf_size'
where bo_table = '$bo_table' and wr_id = '$wr_id' ";
sql_query($sql);
//---------->madem님이 알려주신 부분입니다.^^
}
}
}
|
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기
댓글 27개
리사이징을 잘 모르시는 어른들을 위한 필수 팁이네요.^^
$dst = imagecreatetruecolor($board[bo_image_width], $height);
imagecopyresampled($dst, $src, 0, 0, 0, 0, $board[bo_image_width], $height, $size[0], $size[1]);
imagepng($dst, $data_path.'/'.$row2[bf_file], $board[bo_2]);
chmod($data_path.'/'.$row2[bf_file], 0606);
$bf_size = @filesize(addslashes($file));
$sql = " update $g4[board_file_table]
set bf_filesize = '$bf_size'
where bo_table = '$bo_table' and wr_id = '$wr_id' ";
sql_query($sql);
////////////////////////////
이렇게 수정해주시면 줄어든 용량으로 표시 됩니다.
스크랩, 추천 꽝, 꽝~!!
그저 감사할 따름입니다. 언제나 꾸준하시는 모습이 멋져 보입니다...^^
아푼 기억이 있습니다...
컴터와 안친하신분들 생각외로 많으시더라구요........
저두 추천 합니다.
절대 공감합니다
저는 메인화면 최근글에 강죄 리사이즈 때문에 리사이즈 로직 찾고 있었는데
마침 잘됐네요~
감사요~
저 같은 경우, 리사이즈된 이미지의 용량이... 원본과 비교해서 거의 두배정도 커집니다.
공간의 효율성을 위한 팁이라면...오히려 반대의 효과가 나오는건데.... ㅡㅡ;
다른분들은 어떠신가요?
jpeg파일로 생성하시면 확연히 줄어듭니다.
감사히 쓸게요
유용하게 쓰겠습니다 ^^
이미지 줄이는방법까지 모두 알려줄수없어서 정말 고민했었네요..ㅎㅎ 간절히 찾던팁인데..덕분에 잘 적용했습니다. 너무 감사한 팁이네요..^^
작은 용량의 계정을 사용하는 이들을 위해서 원본의 사이즈를 줄여서 저장하는
방법이죠....리스트의 썸네일을 생성 관리 하려면 관리자님이 만드신 겔러리 스킨을
참조하시면 비율 썸이 될 것입니다.
원본를 수정본으로 바꾸니까 잘되네요..
//원본
$rate = $board[bo_image_width] / $size[0];
$height = (int)($size[1] * $rate);
@unlink($data_path.'/'.$row2[bf_file]);
$dst = imagecreatetruecolor($board[bo_image_width], $height);
imagecopyresampled($dst, $src, 0, 0, 0, 0, $board[bo_image_width], $height, $size[0], $size[1]);
//수정본.
$rate = $board[bo_image_width] / $size[0];
if ($size[0] <= $board[bo_image_width]) $rate=1;
$width = (int)($size[0] * $rate);
$height = (int)($size[1] * $rate);
@unlink($data_path.'/'.$row2[bf_file]);
$dst = imagecreatetruecolor($width, $height);
imagecopyresampled($dst, $src, 0, 0, 0, 0, $width, $height, $size[0], $size[1]);