web-dev-qa-db-fra.com

Vérifiez les dimensions de l'image (hauteur et largeur) avant de télécharger l'image à l'aide de PHP

Comment puis-je vérifier la hauteur et la largeur avant de télécharger l'image, en utilisant PHP.

Dois-je d'abord télécharger l'image et utiliser "getimagesize ()"? Ou puis-je vérifier cela avant de le télécharger en utilisant PHP?

<?php

foreach ($_FILES["files"]["error"] as $key => $error) {
if(
$error == UPLOAD_ERR_OK
&& $_FILES["files"]["size"][$key] < 500000 
&& $_FILES["files"]["type"][$key] == "image/gif"
|| $_FILES["files"]["type"][$key] == "image/png"
|| $_FILES["files"]["type"][$key] == "image/jpeg"
|| $_FILES["files"]["type"][$key] == "image/pjpeg" 
){


$filename = $_FILES["files"]["name"][$key];








if(HOW TO CHECK WIDTH AND HEIGHT)
{
echo '<p>image dimenssions must be less than 1000px width and 1000px height';
}


}







?>
24
Hakan

Vous avez besoin de quelque chose qui est exécuté sur le client avant le téléchargement réel.
Avec (côté serveur) php, vous pouvez vérifier la dimension uniquement après que le fichier a été téléchargé ou avec pload hooks peut-être pendant le chargement de l'image (à partir des données d'en-tête du fichier image).

Vos options sont donc flash, peut-être html5 avec son FileAPI (je n'ai pas testé ça, ce n'est peut-être pas faisable), Java-applet, silverlight, ...

4
VolkerK

Nous pouvons le faire facilement avec le fichier temporaire.

$image_info = getimagesize($_FILES["file_field_name"]["tmp_name"]);
$image_width = $image_info[0];
$image_height = $image_info[1];
95
Tharanga

Voilà comment je l'ai résolu.

$test = getimagesize('../bilder/' . $filnamn);
$width = $test[0];
$height = $test[1];

if ($width > 1000 || $height > 1000)
{
echo '<p>iamge is to big';
unlink('../bilder/'.$filnamn);
}
8
Hakan

Si le fichier se trouve dans le tableau $_FILES (Car il a été sélectionné dans un formulaire en plusieurs parties), il a déjà été téléchargé sur le serveur (généralement vers/tmp ou un chemin de fichier similaire), vous pouvez donc continuer et utiliser la fonction getimagesize() en php pour obtenir les dimensions (y compris tous les détails sous forme de tableau).

5
liquorvicar

Ce travail pour moi

$file = $_FILES["files"]['tmp_name'];
list($width, $height) = getimagesize($file);

if($width > "180" || $height > "70") {
    echo "Error : image size must be 180 x 70 pixels.";
    exit;
}
4
jalalBK

Pour obtenir la largeur et la hauteur de l'image, utilisez getimagesize(path_name), cette fonction renvoie le tableau qui contient la hauteur, la largeur, la constante image_type et d'autres informations liées à l'image. Par le code suivant, vous pouvez y parvenir.

Note - Vous devez passer l'emplacement temporaire de l'image et utiliser le morceau de code suivant avant d'utiliser move_upload_file(), sinon il déplacera le fichier vers le chemin de destination et vous n'obtiendrez pas le résultat souhaité pour l'image

$imageInformation = getimagesize($_FILES['celebrity_pic']['tmp_name']);
print_r($imageInformation);

$imageWidth = $imageInformation[0]; //Contains the Width of the Image

$imageHeight = $imageInformation[1]; //Contains the Height of the Image

if($imageWidth >= your_value && $imageHeight >= your_value)
{
  //Your Code
}
3
Channaveer Hakari
 array getimagesize ( string $filename [, array &$imageinfo ] )

La fonction getimagesize () déterminera la taille de tout fichier d'image donné et renverra les dimensions avec le type de fichier et une chaîne de texte hauteur/largeur à utiliser dans une balise HTML IMG normale et le type de contenu HTTP correspondant.

Pour plus de mise à jour, visitez le site: http://www.php.net/manual/en/function.getimagesize.php

0
Rizvan

Très important - si vous utilisez Dreamweaver pour coder et que vous essayez d'obtenir la taille de l'image à l'aide du $_FILES[anyFormName][tmp_name] il affichera une erreur en mode d'affichage en direct .. Il m'a fallu un certain temps pour comprendre cela.

0
user2976773