lib_inc.php
function thumnail($file, $save_filename, $save_path, $max_width, $max_height)
{
$img_info = getimagesize($file);
if ($img_info[2] == 1) {
$src_img = ImageCreateFromGif($file);
} elseif ($img_info[2] == 2) {
$src_img = ImageCreateFromJPEG($file);
} elseif ($img_info[2] == 3) {
$src_img = ImageCreateFromPNG($file);
} else {
return 0;
}
$img_width = $img_info[0];
$img_height = $img_info[1];
if ($img_width > $max_width || $img_height > $max_height) {
if ($img_width == $img_height) {
$dst_width = $max_width;
$dst_height = $max_height;
} elseif ($img_width > $img_height) {
$dst_width = $max_width;
$dst_height = ceil(($max_width / $img_width) * $img_height);
} else {
$dst_height = $max_height;
$dst_width = ceil(($max_height / $img_height) * $img_width);
}
} else {
$dst_width = $img_width;
$dst_height = $img_height;
}
if ($dst_width < $max_width) $srcx = ceil(($max_width - $dst_width) / 2); else $srcx = 0;
if ($dst_height < $max_height) $srcy = ceil(($max_height - $dst_height) / 2); else $srcy = 0;
if ($img_info[2] == 1) {
$dst_img = imagecreate($max_width, $max_height);
} else {
$dst_img = imagecreatetruecolor($max_width, $max_height);
}
$bgc = ImageColorAllocate($dst_img, 255, 255, 255);
ImageFilledRectangle($dst_img, 0, 0, $max_width, $max_height, $bgc);
ImageCopyResampled($dst_img, $src_img, $srcx, $srcy, 0, 0, $dst_width, $dst_height, ImageSX($src_img), ImageSY($src_img));
if ($img_info[2] == 1) {
ImageInterlace($dst_img);
ImageGif($dst_img, $save_path . $save_filename);
} elseif ($img_info[2] == 2) {
ImageInterlace($dst_img);
ImageJPEG($dst_img, $save_path . $save_filename);
} elseif ($img_info[2] == 3) {
ImagePNG($dst_img, $save_path . $save_filename);
}
@ImageDestroy($dst_img);
@ImageDestroy($src_img);
}
function thumnail_width($file, $save_filename, $save_path, $max_width)
{
$img_info = getimagesize($file);
if ($img_info[2] == 1) {
$src_img = ImageCreateFromGif($file);
} else if ($img_info[2] == 2) {
$src_img = ImageCreateFromJPEG($file);
} else if ($img_info[2] == 3) {
$src_img = ImageCreateFromPNG($file);
} else {
return 0;
}
$img_width = $img_info[0];
$img_height = $img_info[1];
$dst_width = $max_width;
$dst_height = round($dst_width * ($img_height / $img_width));
$srcx = 0;
$srcy = 0;
if ($img_info[2] == 1) {
$dst_img = imagecreate($dst_width, $dst_height);
} else {
$dst_img = imagecreatetruecolor($dst_width, $dst_height);
}
ImageCopyResampled($dst_img, $src_img, $srcx, $srcy, 0, 0, $dst_width, $dst_height, ImageSX($src_img), ImageSY($src_img));
if ($img_info[2] == 1) {
ImageInterlace($dst_img);
ImageGif($dst_img, $save_path . $save_filename);
} else if ($img_info[2] == 2) {
ImageInterlace($dst_img);
ImageJPEG($dst_img, $save_path . $save_filename);
} else if ($img_info[2] == 3) {
ImagePNG($dst_img, $save_path . $save_filename);
}
@ImageDestroy($dst_img);
@ImageDestroy($src_img);
}
banner_update.php
// 확장자 체크, 기존 파일 삭제 기능 포함
// sql 구문은 자신의 작업 환경에 맞춰서 수정해야 함
include "./lib_inc.php";
$upload_directory = './data/banner/';
$ext_str = "jpg,jpeg,gif,png,JPG,JPEG,GIF,PNG";
$allowed_extensions = explode(',', $ext_str);
$idx = $_POST['idx'];
$a_file = '';
$ext = substr($_FILES['a_file'], strrpos($_FILES['a_file']['name'], '.') + 1);
$file_name = "banner".date("YmdHis").'.'.$ext;
if(!in_array($ext, $allowed_extensions)) {
// 확장자 검사
alert("업로드할 수 없는 확장자 입니다.","./adbanner_list.php?".$_POST['qstr']);
}
if(move_uploaded_file($_FILES['a_file']['tmp_name'], $upload_directory.$file_name)) {
// 이미지 파일 저장 후,
$tmpFilePath = $_FILES['a_file']['tmp_name'];
if (getimagesize($tmpFilePath)){
// 이미지 width, height 값 확인
$imageInfo = getimagesize($tmpFilePath);
$width = $imageInfo[0];
$height = $imageInfo[1];
// 이미지 용량 줄이기
thumnail($upload_directory."/".$file_name, $file_name, $upload_directory."/", $width, $height);
$a_file = $file_name;
}
} else {
alert("파일이 업로드 되지 않았습니다.","./adbanner_list.php?".$_POST['qstr']);
}
if($a_file){
// 새로운 파일이 첨부되었을 때
$sqla = "select * from {DB_TABLE} where idx = '{$idx}' ";
$rowa = $DB->sql_fetch($sqla);
if($rowa['a_file']){
// 기존에 저장되어 있는 파일이 있을 경우 파일 삭제
unlink($upload_directory.$rowa['a_file']);
}
}
'웹 개발 이야기 > php' 카테고리의 다른 글
[PHP] php로 node.js 처럼 소켓 여는 법 (0) | 2023.06.15 |
---|---|
[PHP] php + redis > session 관리로 대폭적인 성능향상 (0) | 2023.06.14 |
[PHP] AWS S3 Bucket의 파일 삭제 (0) | 2023.03.16 |
[PHP+JQUERY] 2단계 카테고리 메뉴 (0) | 2023.03.16 |
[PHP] pagination (0) | 2023.03.16 |
댓글