웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
썸네일 자동생성하고 이미지 사이즈 자동 줄이기...
2003.05.21 02:53
내용은 글 제목과 같습니다.
큰 이미지를 업로드 시키면 자동으로 썸네일 이미지를 하나더 만들고 이미지 사이즈가 너무 크다면 줄여 줍니다.
구현 방법은 리눅스에 있는 프로그램을 이용하여 jpeg, gif 를 pnm 이미지로 만든 다음 pnm 이미지를 다시 적당한 크기의 jpg 파일로 만듭니다.
----------------------------------------------------------------------------------------------------------------------
$bigX = 640;
$bigY = 480;
$smallX = 100;
$smallY = 75;
if(is_uploaded_file($_FILES[c_pics][tmp_name])){
$upload_img_no = 'n';
$type = explode("/", $_FILES[c_pics][type]);
if($type[0] == "image"){// 업로드된 파일의 형식을 체크 합니다.
$ext = ($type[1] == "pjpeg")? "jpg": $type[1];
$ser = mkSer(6); // 저의 경우는 동시에 여러장의 그림을 업하는 관계로 6자리의 임의 알파벳을 읽어오는 함수를 사용 => 파일이름
$filename = $now.$ser;
$img_name = $filename.".".$ext;
$img_pnm = $filename.".pnm";
$img_pnm1 = $filename."1.pnm";
##일단 임시 디렉토리로 이동시켜서
if(move_uploaded_file($_FILES[c_pics][tmp_name], "{$img_tmp_dir}/{$img_name}")){
exec("chmod 655 {$img_up_dir}/{$img_name}");
$orgSize = getimagesize("{$img_tmp_dir}/{$img_name}");
if($orgSize[0] > $bigX && $orgSize[1] > $bigY){
### pnm 이미지로 변환
if($ext == 'jpg') exec("djpeg -pnm {$img_tmp_dir}/{$img_name} > {$tmp}/{$img_pnm}");
elseif($ext == 'gif') exec("giftopnm {$img_tmp_dir}/{$img_name} > {$tmp}/{$img_pnm}");
exec("pnmscale -xsize {$bigX} {$tmp}/{$img_pnm} | cjpeg -quality 85 -outfile {$img_up_dir}/{$filename}.jpg");
exec("pnmscale -ysize {$bigY} {$tmp}/{$img_pnm} | cjpeg -quality 85 -outfile {$img_up_dir}/{$filename}.jpg");
if($i == 0){
### 썸네일 이미지를 만듭니다.
exec("djpeg -pnm $img_up_dir/{$filename}.jpg > {$tmp}/{$img_pnm1}");
exec("pnmscale -xsize {$smallX} {$tmp}/{$img_pnm1} | cjpeg -quality 100 -outfile {$thumb_dir}/{$filename}.jpg");
exec("pnmscale -ysize {$smallY} {$tmp}/{$img_pnm1} | cjpeg -quality 100 -outfile {$thumb_dir}/{$filename}.jpg");
}
$img_name = $filename.".jpg";
}
else{
exec("cp $img_tmp_dir/$img_name $img_up_dir/$img_name");
//$img_name = $filename.".jpg";
}
@unlink("$img_tmp_dir/$img_name");
@unlink("$tmp/$img_pnm1");
@unlink("$tmp/$img_pnm");
echo("<div>OK! : $_FILES[c_pics][name]</div>");
}
else{
echo("<div>Failure! : $_FILES[c_pics][name]</div>");
}
}
else echo("<div>Warning : $_FILES[c_pics][name] is Not a Image File</div>");
}
큰 이미지를 업로드 시키면 자동으로 썸네일 이미지를 하나더 만들고 이미지 사이즈가 너무 크다면 줄여 줍니다.
구현 방법은 리눅스에 있는 프로그램을 이용하여 jpeg, gif 를 pnm 이미지로 만든 다음 pnm 이미지를 다시 적당한 크기의 jpg 파일로 만듭니다.
----------------------------------------------------------------------------------------------------------------------
$bigX = 640;
$bigY = 480;
$smallX = 100;
$smallY = 75;
if(is_uploaded_file($_FILES[c_pics][tmp_name])){
$upload_img_no = 'n';
$type = explode("/", $_FILES[c_pics][type]);
if($type[0] == "image"){// 업로드된 파일의 형식을 체크 합니다.
$ext = ($type[1] == "pjpeg")? "jpg": $type[1];
$ser = mkSer(6); // 저의 경우는 동시에 여러장의 그림을 업하는 관계로 6자리의 임의 알파벳을 읽어오는 함수를 사용 => 파일이름
$filename = $now.$ser;
$img_name = $filename.".".$ext;
$img_pnm = $filename.".pnm";
$img_pnm1 = $filename."1.pnm";
##일단 임시 디렉토리로 이동시켜서
if(move_uploaded_file($_FILES[c_pics][tmp_name], "{$img_tmp_dir}/{$img_name}")){
exec("chmod 655 {$img_up_dir}/{$img_name}");
$orgSize = getimagesize("{$img_tmp_dir}/{$img_name}");
if($orgSize[0] > $bigX && $orgSize[1] > $bigY){
### pnm 이미지로 변환
if($ext == 'jpg') exec("djpeg -pnm {$img_tmp_dir}/{$img_name} > {$tmp}/{$img_pnm}");
elseif($ext == 'gif') exec("giftopnm {$img_tmp_dir}/{$img_name} > {$tmp}/{$img_pnm}");
exec("pnmscale -xsize {$bigX} {$tmp}/{$img_pnm} | cjpeg -quality 85 -outfile {$img_up_dir}/{$filename}.jpg");
exec("pnmscale -ysize {$bigY} {$tmp}/{$img_pnm} | cjpeg -quality 85 -outfile {$img_up_dir}/{$filename}.jpg");
if($i == 0){
### 썸네일 이미지를 만듭니다.
exec("djpeg -pnm $img_up_dir/{$filename}.jpg > {$tmp}/{$img_pnm1}");
exec("pnmscale -xsize {$smallX} {$tmp}/{$img_pnm1} | cjpeg -quality 100 -outfile {$thumb_dir}/{$filename}.jpg");
exec("pnmscale -ysize {$smallY} {$tmp}/{$img_pnm1} | cjpeg -quality 100 -outfile {$thumb_dir}/{$filename}.jpg");
}
$img_name = $filename.".jpg";
}
else{
exec("cp $img_tmp_dir/$img_name $img_up_dir/$img_name");
//$img_name = $filename.".jpg";
}
@unlink("$img_tmp_dir/$img_name");
@unlink("$tmp/$img_pnm1");
@unlink("$tmp/$img_pnm");
echo("<div>OK! : $_FILES[c_pics][name]</div>");
}
else{
echo("<div>Failure! : $_FILES[c_pics][name]</div>");
}
}
else echo("<div>Warning : $_FILES[c_pics][name] is Not a Image File</div>");
}
댓글 6
제목 | 글쓴이 | 날짜 |
---|---|---|
htmlspecialchars 사용하시는 분들 [5] | holies | 2003.07.11 |
이미 인클루드된 파일은 다시 인클루드하지 않기 [14] | 김병희 | 2003.06.20 |
PHP 익히기 3 [11] | 구리구리 | 2003.06.17 |
PHP 익히기 2 [9] | 구리구리 | 2003.06.10 |
PHP 익히기 1 [24] | 구리구리 | 2003.06.09 |
php 로 기존 문서 포함시키기 [10] | 이성헌 | 2003.06.08 |
체크박스등으로 배열로 변수를 넘길때.. [1] | myself2 | 2003.06.06 |
홈페이지의 내용을 DB에 담기 [15] | 세죠위그이 | 2003.05.30 |
썸네일 자동생성하고 이미지 사이즈 자동 줄이기... [6] | sMokaHallo | 2003.05.21 |
Wake On Lan 기능 사용하기... [3] | sMokaHallo | 2003.05.17 |
스킨 시스템 구축.(1탄 읽어오기) [11] | 씨파개 | 2003.05.13 |
none 과 null 처리 문제 해결법 [5] | 허현승 | 2003.05.12 |
세션파일 크기/만들어진 시간체크해서 정해진 시간이후엔 파일 지우기?;; (라고 써야되낭? ;;) [6] | 다오케이 | 2003.05.12 |
PHP+MSSQL?(수정판) [11] | 씨파개 | 2003.05.10 |
이미지 전용 파일업로드시의 확장자 체크시.. [4] | 특급잠수부 | 2003.05.07 |
mysql_fetch_row n mysql_fetch_array n mysql_fetch_object [4] | sMokaHallo | 2003.05.06 |
if 시리즈 2탄.. ㅡㅡ;; [9] | 씨파개 | 2003.05.05 |
PHP 확장 함수를 이용한 exif 정보 출력
[1]
![]() | NoSoRi | 2003.04.30 |
if 시리즈 1탄! [15] | 씨파개 | 2003.04.28 |
ID3v1태그 읽는 함수입니다. [4] | 김승태 | 2003.04.27 |