단순 보여지는 사이즈 변경이 아닌 업로드이미지 파일 자체의 사이즈를 줄인다
editorfile/php/FileUploader_html5.php 의 기존 소스에 아래와 같이 변경한다
html5가 아닌 경우에는 FileUploader.php을 수정하면 되는데 그 부분은 어렵지 않으므로 생략한다
resizeWH() 함수와 resize_copy_b() 함수를 추가했으며 소스하단에서 너비가 1280이 넘으면 기존 소스와 분기하도록 했다.
<?php
function resizeWH($w,$h) {
$percent = 0.8;
$cnt = 0;
while($w>1280){
$w = $w*$percent;
$h = $h*$percent;
$cnt++;
if($cnt>100) {
break;
}
}
return array($w,$h);
}
function resize_copy_b($img,$get_FILENAME,$pdsDIR,$wh){
$ext = explode('.',$get_FILENAME);
$width = imagesx($img);
$height = imagesy($img);
$new_width = $wh[0];
$new_height = $wh[1];
$image_p = imagecreatetruecolor($new_width, $new_height);
imagecopyresampled($image_p, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
if($ext[count($ext)-1] == "jpg"||$ext[count($ext)-1] == "jpeg"){
imagejpeg($image_p, $pdsDIR.$get_FILENAME, 100);
}else if($ext[count($ext)-1] == "png"){
imagepng($image_p, $pdsDIR.$get_FILENAME, 100);
}else if($ext[count($ext)-1] == "gif"){
imagegif($image_p, $pdsDIR.$get_FILENAME, 100);
}
}
$sFileInfo = '';
$headers = array();
foreach ($_SERVER as $k => $v){
if(substr($k, 0, 9) == "HTTP_FILE"){
$k = substr(strtolower($k), 5);
$headers[$k] = $v;
}
}
$file = new stdClass;
$temp_var= explode(".", rawurldecode($headers['file_name']));
$tmp_nm = str_replace("", "", time().'-'.rand(0,100).'.'.$temp_var[count($temp_var)-1]);
$file->name = $tmp_nm;//rawurldecode($headers['file_name']);
$file->size = $headers['file_size'];
$file->content = file_get_contents("php://input");
$newPath = '../upload/'.iconv("utf-8", "cp949", $file->name);
$img = imagecreatefromstring($file->content);
$width = imagesx($img);
$height = imagesy($img);
if($width>1280){
$wh = resizeWH($width,$height);
resize_copy_b($img,iconv("utf-8", "cp949", $file->name),'../upload/',$wh);
$sFileInfo .= "&bNewLine=true";
$sFileInfo .= "&sFileName=".$file->name;
$sFileInfo .= "&sFileURL=https://".$_SERVER["HTTP_HOST"]."/editorfile/upload/".$file->name;
}else{
if(file_put_contents($newPath, $file->content)) {
$sFileInfo .= "&bNewLine=true";
$sFileInfo .= "&sFileName=".$file->name;
$sFileInfo .= "&sFileURL=https://".$_SERVER["HTTP_HOST"]."/editorfile/upload/".$file->name;
}
}
echo $sFileInfo;
?>
출처: https://sd23w.tistory.com/392 [그러냐:티스토리]
댓글 0
팁&유틸
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
8 |
xampp php8.2 ffmpeg 설치
![]() | 공수래 | 2024.02.24 | 101 |
7 |
jQuery Waterwheel Carousel
![]() | 공수래 | 2024.02.15 | 69 |
6 | 이미지 태그의 width, height 스타일이 모두 명시되어야 하는 이유 | 공수래 | 2024.02.12 | 161 |
5 | PHP에서 이미지 크기 조정 | 공수래 | 2024.02.11 | 134 |
4 | PHP의 URL에서 이미지 저장 | 공수래 | 2024.02.11 | 210 |
3 | 이미지 비율 유지 축소 | 공수래 | 2024.02.11 | 57 |
2 | 이미지 사이즈 비율로 조정 | 공수래 | 2024.02.11 | 96 |
» | php 이미지 리사이징 | 공수래 | 2024.02.11 | 108 |