2013-07-03 10 views
0

이미지 크기가 50kb 이상인 경우 어떻게 이미지 크기를 조정합니까?파일 크기가 50kb 이상인 경우 이미지 크기 조정

이것은 현재 코드입니다.

$sess=66666; 
$images = $_FILES["photoimg"]["tmp_name"]; 
$new_images = "$sess.gif"; 
$width=200; 
//*** Fix Width & Heigh (Autu caculate) ***// 
$size=GetimageSize($images); 
$height=round($width*$size[1]/$size[0]); 
if($size[2] == 1) { 
    $images_orig = imagecreatefromgif($images); 
} else if($size[2] == 2) { 
    $images_orig = imagecreatefromjpeg($images); 
}else if($size[2] == 3) { 
    $images_orig = imagecreatefrompng($images); 
} 
$photoX = ImagesX($images_orig); 
$photoY = ImagesY($images_orig); 
$images_fin = ImageCreateTrueColor($width, $height); 
ImageCopyResampled($images_fin, $images_orig, 0, 0, 0, 0, $width+1, $height+1, $photoX, $photoY); 
Imagejpeg($images_fin,"images/".$new_images); 
ImageDestroy($images_orig); 
ImageDestroy($images_fin); 
+2

가 나는 경우 조건에있는 파일의 크기를 점검 방법 사용하는 것이 좋습니다 것입니다 ... 당신이 시도 무엇입니까? –

+0

왜'Imagejpeg','GetimageSize'를 사용하고 있습니까? PHP는 대소 문자를 구분합니다! 대신 [imagejpeg] (http://php.net/manual/ru/function.imagejpeg.php), [getimagesize] (http://au1.php.net/manual/ru/function.getimagesize.php) 을 사용하십시오. 먼저 모든 것을 모두 소문자로 바꾸면 작동 할 수도 있습니다. – vladkras

+1

@vladkras - 실제로 .... 함수 이름은 대소 문자를 구별하지 않습니다. – andrewsi

답변

3

filesize()을 사용하십시오. 이 같은

$sess=66666; 
$images = $_FILES["photoimg"]["tmp_name"]; 
$new_images = "$sess.gif"; 
$maxsize = 50 * 1024; // 50Kb 

if(filesize($images) > $maxsize) { 
    $width=200; 
    //*** Fix Width & Heigh (Autu caculate) ***// 
    $size=getimagesize($images); 
    $height=round($width*$size[1]/$size[0]); 
    if($size[2] == 1) { 
     $images_orig = imagecreatefromgif($images); 
    } else if($size[2] == 2) { 
     $images_orig = imagecreatefromjpeg($images); 
    }else if($size[2] == 3) { 
     $images_orig = imagecreatefrompng($images); 
    } 
    $photoX = imagesx($images_orig); 
    $photoY = imagesy($images_orig); 
    $images_fin = imagecreatetruecolor($width, $height); 
    imagecopyresampled($images_fin, $images_orig, 0, 0, 0, 0, $width+1, $height+1,   $photoX, $photoY); 
    imagejpeg($images_fin,"images/".$new_images); 
    imagedestroy($images_orig); 
    imagedestroy($images_fin); 
} else { 
    imagejpeg($images,"images/".$new_images); 
} 
1

테스트 파일 크기 :

$maxSize = 50 * 1024; 

$sess=66666; 
$images = $_FILES["photoimg"]["tmp_name"]; 

if(filesize($images) > $maxSize){ 

    $sess=66666; 
    $images = $_FILES["photoimg"]["tmp_name"]; 
    $new_images = "$sess.gif"; 
    $width=200; 
    //*** Fix Width & Heigh (Autu caculate) ***// 
    $size=GetimageSize($images); 
    $height=round($width*$size[1]/$size[0]); 
    if($size[2] == 1) { 
     $images_orig = imagecreatefromgif($images); 
    } else if($size[2] == 2) { 
     $images_orig = imagecreatefromjpeg($images); 
    }else if($size[2] == 3) { 
     $images_orig = imagecreatefrompng($images); 
    } 
    $photoX = ImagesX($images_orig); 
    $photoY = ImagesY($images_orig); 
    $images_fin = ImageCreateTrueColor($width, $height); 
    ImageCopyResampled($images_fin, $images_orig, 0, 0, 0, 0, $width+1, $height+1, $photoX, $photoY); 
    Imagejpeg($images_fin,"images/".$new_images); 
    ImageDestroy($images_orig); 
    ImageDestroy($images_fin); 

} 
+2

파일 크기가 50KB 미만이면 파일이 저장되지 않고 임시 디렉토리에 남아 있습니다. 또한 50KB는 51200 바이트입니다. 또한 중복 답변을 삼가 해주십시오. – Timmetje

+0

@TimDev 귀하의 의견이 유용하기 때문에 귀하의 중복 답변 코멘트 때문에 신고하지 않겠습니다. 그러나 타임 스탬프를 보지 말고 중복 답변을 사람들에게 비난하지 마십시오. 타임 스탬프에서 다른 답을 찾은 지 3 분 만에 답을 볼 수 있습니다. 나는 각 대답에 대해 ~ 10 분이 걸린다. 그래서 다른 대답이 있다는 것을 알았던 것은 의심 스럽다. – NoobishPro