2016-10-29 9 views
4

私は4つの画像とPHPフォームハンドラを送信するAJAXフォームを持っています。受け入れられる形式は.gif、.png、.jpg、.jpegです。フォームを送信する前にjavascriptを使用してイメージファイルのタイプをチェックしています。トリミングせずに画像を最大幅または高さに調整

は今、PHPで私はこのコードを持っている:

while($x <= 4) { 
     $target_dir = "files/"; 
     $target_file = $target_dir . basename($_FILES["fileUpload".$x]["name"]); 
     $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); 
     if (move_uploaded_file($_FILES["fileUpload".$x]["tmp_name"], $target_file)) { 
        $filename = date("d-m-Y---H-i-s---").rand(10000,99999); 
        $oldfile = $target_file; 
        $newfile = $target_dir . $filename . "." . $imageFileType; 
        rename($oldfile, $newfile); 
        $file[$x] = $filename . "." . $imageFileType; 
        $fileCounter++; 
     } 
     $x++; 
    } 

一部の人々は、大きな画像ファイルをアップロードし、私は自動的に画像をトリミングせずに最大の幅/高さにそれらのサイズを変更したいです。 PHPを使ってどうすればいいですか?

答えて

3

前に、あなたのファイルのサイズをチェクしない限り、PHPの下でのgzipライブラリを使用してみてください。 名前を変更した後のif条件の内部には、次のコードを書くことができます。

list($width, $height) = getimagesize($file); 
$ratio = $width/$height; 
if($ratio > 1) { 
    $resized_width = 500; //suppose 500 is max width or height 
    $resized_height = 500/$ratio; 
} 
else { 
    $resized_width = 500*$ratio; 
    $resized_height = 500; 
} 

    if ($imageFileType == 'png') { 
     $image = imagecreatefrompng($newfile); 
    } else if ($imageFileType == 'gif') { 
     $image = imagecreatefromgif($newfile); 
    } else { 
     $image = imagecreatefromjpeg($newfile); 
    } 

$resized_image = imagecreatetruecolor($resized_width, $resized_height); 
imagecopyresampled($resized_image, $image, 0, 0, 0, 0, $resized_width, $resized_height, $width, $height); 
0

は、あなたがこのためにPHPのGDライブラリを使用することができますあなたは

if ($_FILES["fileToUpload"]["size"] > 500000) 
関連する問題