게시물에 올리는 원본 이미지 자체를 리사이징 하는 방법을 찾고 있습니다.
우선 검색해서 나오는 두가지 방법이 있는데… 아래와 같은 에러가 있어서요.
원본 이미지의 파일 자체를 width 값 + 비율로 리사이즈 하는 방법을 알고 싶어요.
불당리사이즈의 경우엔 원본을 남기게 되는데… 제 경우엔 트래픽 보다는 서버 용량 때문이라… 다른 방법을 찾고 있습니다.
http://sir.co.kr/bbs/board.php?bo_table=g4_qa&wr_id=45885
write.update.skin 을 수정 하는 방법;
한 게시물에 여러 파일을 올릴 경우, 두번째 파일 부터는 리사이즈가 안됨.
http://sir.co.kr/bbs/board.php?bo_table=g4_skin&wr_id=117780
bbs/write_update.php 를 수정하는 방법;
여러개의 이미지를 올릴 경우 에러가 뜸.
Fatal error: Allowed memory size of 41943040 bytes exhausted (tried to allocate 6816 bytes) in /home3/hosting_users/…………/www/bbs/write_update.php on line 259
(255라인 부터 적으면
$size = getimagesize($dest_file);
if ($size[2] == 1)
$src = imagecreatefromgif($dest_file);
else if ($size[2] == 2)
$src = imagecreatefromjpeg($dest_file);
else if ($size[2] == 3)
$src = imagecreatefrompng($dest_file);
)
우선 검색해서 나오는 두가지 방법이 있는데… 아래와 같은 에러가 있어서요.
원본 이미지의 파일 자체를 width 값 + 비율로 리사이즈 하는 방법을 알고 싶어요.
불당리사이즈의 경우엔 원본을 남기게 되는데… 제 경우엔 트래픽 보다는 서버 용량 때문이라… 다른 방법을 찾고 있습니다.
http://sir.co.kr/bbs/board.php?bo_table=g4_qa&wr_id=45885
write.update.skin 을 수정 하는 방법;
한 게시물에 여러 파일을 올릴 경우, 두번째 파일 부터는 리사이즈가 안됨.
http://sir.co.kr/bbs/board.php?bo_table=g4_skin&wr_id=117780
bbs/write_update.php 를 수정하는 방법;
여러개의 이미지를 올릴 경우 에러가 뜸.
Fatal error: Allowed memory size of 41943040 bytes exhausted (tried to allocate 6816 bytes) in /home3/hosting_users/…………/www/bbs/write_update.php on line 259
(255라인 부터 적으면
$size = getimagesize($dest_file);
if ($size[2] == 1)
$src = imagecreatefromgif($dest_file);
else if ($size[2] == 2)
$src = imagecreatefromjpeg($dest_file);
else if ($size[2] == 3)
$src = imagecreatefrompng($dest_file);
)
댓글 3개
출처 : http://sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=8179&sca=&sfl=wr_subject%7C%7Cwr_content&stx=aaaa+bbbb
//////////////////////////// 요기부터 내용추가요부터
//////////////////////////// 요기까지 추가내용 끝부분 붙여보세요~!!
bbs/write_update.php 파일내용 중에서
// 업로드된 파일 내용에서 가장 큰 번호를 얻어 거꾸로 확인해 가면서
// 파일 정보가 없다면 테이블의 내용을 삭제합니다.
$row = sql_fetch(" select max(bf_no) as max_bf_no from $g4[board_file_table] where bo_table = '$bo_table' and wr_id = '$wr_id' ");
for ($i=(int)$row[max_bf_no]; $i>=0; $i--)
{
$row2 = sql_fetch(" select bf_file from $g4[board_file_table] where bo_table = '$bo_table' and wr_id = '$wr_id' and bf_no = '$i' ");
// 정보가 있다면 빠집니다.
if ($row2[bf_file]) break;
// 그렇지 않다면 정보를 삭제합니다.
sql_query(" delete from $g4[board_file_table] where bo_table = '$bo_table' and wr_id = '$wr_id' and bf_no = '$i' ");
}
////////////////////////////////////////// ////////////// 요기부터 내용추가요~!!
if ($bo_table != "aaaa" && $bo_table != "bbbb" ) { // 제외시킬 게시판 명
$img_limit_width = 660; // 제한할 이미지 폭
$img_quality = 100; // 이미지 품질
$data_path = $g4[path]."/data/file/$bo_table";
$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 = $img_limit_width / $size[0];
$height = (int)($size[1] * $rate);
if ($size[0] > $img_limit_width){
@unlink($data_path.'/'.$row2[bf_file]);
$dst = imagecreatetruecolor($img_limit_width, $height);
imagecopyresampled($dst, $src, 0, 0, 0, 0, $img_limit_width, $height, $size[0], $size[1]);
// imagepng($dst, $data_path.'/'.$row2[bf_file], $board[bo_2]);
//이부분이 png 압축방식이어서 이미지 커졌나 봅니다.
//아래처럼 하니 줄어드는 것을 확실히 느껴집니다....^^
imagejpeg($dst, $data_path.'/'.$row2[bf_file], $img_quality);
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님이 알려주신 부분입니다.^^
}
}
}
}
}
//////////////////////////////////////////////////////// 요기까지 추가내용 끝
//------------------------------------------------------------------------------
// 비밀글이라면 세션에 비밀글의 아이디를 저장한다. 자신의 글은 다시 패스워드를 묻지 않기 위함
//////////////////////////// 요기부터 내용추가요부터
//////////////////////////// 요기까지 추가내용 끝부분 붙여보세요~!!
bbs/write_update.php 파일내용 중에서
// 업로드된 파일 내용에서 가장 큰 번호를 얻어 거꾸로 확인해 가면서
// 파일 정보가 없다면 테이블의 내용을 삭제합니다.
$row = sql_fetch(" select max(bf_no) as max_bf_no from $g4[board_file_table] where bo_table = '$bo_table' and wr_id = '$wr_id' ");
for ($i=(int)$row[max_bf_no]; $i>=0; $i--)
{
$row2 = sql_fetch(" select bf_file from $g4[board_file_table] where bo_table = '$bo_table' and wr_id = '$wr_id' and bf_no = '$i' ");
// 정보가 있다면 빠집니다.
if ($row2[bf_file]) break;
// 그렇지 않다면 정보를 삭제합니다.
sql_query(" delete from $g4[board_file_table] where bo_table = '$bo_table' and wr_id = '$wr_id' and bf_no = '$i' ");
}
////////////////////////////////////////// ////////////// 요기부터 내용추가요~!!
if ($bo_table != "aaaa" && $bo_table != "bbbb" ) { // 제외시킬 게시판 명
$img_limit_width = 660; // 제한할 이미지 폭
$img_quality = 100; // 이미지 품질
$data_path = $g4[path]."/data/file/$bo_table";
$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 = $img_limit_width / $size[0];
$height = (int)($size[1] * $rate);
if ($size[0] > $img_limit_width){
@unlink($data_path.'/'.$row2[bf_file]);
$dst = imagecreatetruecolor($img_limit_width, $height);
imagecopyresampled($dst, $src, 0, 0, 0, 0, $img_limit_width, $height, $size[0], $size[1]);
// imagepng($dst, $data_path.'/'.$row2[bf_file], $board[bo_2]);
//이부분이 png 압축방식이어서 이미지 커졌나 봅니다.
//아래처럼 하니 줄어드는 것을 확실히 느껴집니다....^^
imagejpeg($dst, $data_path.'/'.$row2[bf_file], $img_quality);
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 가 1000픽셀 정도인 1메가 미만의 이미지파일은 문제가 없는데,
2000픽셀이 넘어가는 1.4M 넘어가는 이미지파일로 테스트를 해보니…
아래와 같은 에러가 뜨네요.
Fatal error: Allowed memory size of 41943040 bytes exhausted (tried to allocate 9088 bytes) in /home3/hosting_users/……/www/bbs/write_update.php on line 561
561 줄은 $src = imagecreatefromjpeg($file); 입니다. 아마도… jpeg 일때 이미지 리사이즈에 메모리가 과하게 사용되는 듯한…;;; 호스팅업체 쪽에선 메모리를 증설해줄 수 없는 것 같더군요…
그래서 소스를 어떻게든 수정하려고 하는데 … 으아;; 잘 모르겠어요.
그. 근데…
width 가 1000픽셀 정도인 1메가 미만의 이미지파일은 문제가 없는데,
2000픽셀이 넘어가는 1.4M 넘어가는 이미지파일로 테스트를 해보니…
아래와 같은 에러가 뜨네요.
Fatal error: Allowed memory size of 41943040 bytes exhausted (tried to allocate 9088 bytes) in /home3/hosting_users/……/www/bbs/write_update.php on line 561
561 줄은 $src = imagecreatefromjpeg($file); 입니다. 아마도… jpeg 일때 이미지 리사이즈에 메모리가 과하게 사용되는 듯한…;;; 호스팅업체 쪽에선 메모리를 증설해줄 수 없는 것 같더군요…
그래서 소스를 어떻게든 수정하려고 하는데 … 으아;; 잘 모르겠어요.
게시글 목록
| 번호 | 제목 |
|---|---|
| 284508 | |
| 284499 | |
| 284492 | |
| 284490 | |
| 284484 | |
| 284481 | |
| 284478 | |
| 284476 | |
| 284474 | |
| 284472 | |
| 284470 | |
| 284458 | |
| 284457 | |
| 284454 | |
| 284453 | |
| 284447 | |
| 284446 | |
| 284444 | |
| 284441 | |
| 284440 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기