2017-04-30 3 views
1

Je télécharge des images avec HTML et PHP.Redimensionner l'image lors du téléchargement, pas après le téléchargement?

<form action="" method="post"> 
    <input type="file" name="image" id="image"> 
</form> 

Comment pourrais-je utiliser ImageMagick pour redimensionner l'image si elle est supérieure à 1500 (largeur) x700 (hauteur) si elle est plus grande d'abord, des résidera l'image. Dans la mesure où je cherchais, imagemagick ne peut redimensionner les images qu'après le téléchargement. Est-il possible de redimensionner les images lors du téléchargement, puis de les stocker dans le répertoire/dossier?

Répondre

1

Vous pouvez redimensionner le fichier temporaire, puis enregistrer le fichier une fois celui-ci terminé.

Voici comment je le manipule généralement .. VEUILLEZ NOTER QUE VOUS DEVEZ FAIRE BEAUCOUP PLUS AVEC SECURING THIS UP! Assurez-vous que vous vérifiez le type autorisé de téléchargement, la taille ect ..

J'utilise cette fonction pour redimensionner ..

function img_resize($target, $newcopy, $w, $h, $ext) { 
list($w_orig, $h_orig) = getimagesize($target); 
$scale_ratio = $w_orig/$h_orig; 
if (($w/$h) > $scale_ratio) { 
    $w = $h * $scale_ratio; 
} else { 
    $h = $w/$scale_ratio; 
} 
$img = ""; 
$ext = strtolower($ext); 
if ($ext == "gif"){ 
    $img = imagecreatefromgif($target); 
} else if($ext =="png"){ 
    $img = imagecreatefrompng($target); 
} else { 
    $img = imagecreatefromjpeg($target); 
} 
$tci = imagecreatetruecolor($w, $h); 
// imagecopyresampled(dst_img, src_img, dst_x, dst_y, src_x, src_y, dst_w, 
dst_h, src_w, src_h) 
imagecopyresampled($tci, $img, 0, 0, 0, 0, $w, $h, $w_orig, $h_orig); 
imagejpeg($tci, $newcopy, 80); 
} 

J'appelle la fonction avec le fichier temp ..

$fileName = $_FILES["image"]["name"]; // The file name 
$target_file = $_FILES["image"]["tmp_name"]; 
$kaboom = explode(".", $fileName); // Split file name into an array using the dot 
$fileExt = end($kaboom); // Now target the last array element to get the file extension 
$fname = $kaboom[0]; 
$exten = strtolower($fileExt); 

$resized_file = "uploads/newimagename.ext"; //need to change this make sure you set the extension and file name correct.. you will want to secure things up way more than this too.. 
$wmax = 1500; 
$hmax = 700; 
img_resize($target_file, $resized_file, $wmax, $hmax, $exten);