Vérifiez les dimensions de l'image (hauteur et largeur) avant de télécharger L'image en utilisant 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';
}


}







?>
21
demandé sur Hakan 2011-12-13 12:49:57

8 réponses

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

Donc, vos options sont flash, peut-être html5 avec son FileAPI (n'ont pas testé cela, peut-être que ce n'est pas faisable), java-applet, silverlight,...

4
répondu VolkerK 2011-12-13 08:54:59

Nous pouvons le faire avec le fichier temp facilement.

$image_info = getimagesize($_FILES["file_field_name"]["tmp_name"]);
$image_width = $image_info[0];
$image_height = $image_info[1];
83
répondu Tharanga 2012-11-15 08:29:41

C'est comme ça que 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
répondu Hakan 2011-12-13 09:04:15

Si le fichier est dans le tableau $_FILES (parce qu'il a été sélectionné sous une forme Multipart), il a déjà été téléchargé sur le serveur (généralement dans /tmp ou un chemin de fichier similaire), vous pouvez donc utiliser la fonction getimagesize() en php pour obtenir les dimensions (y compris tous les détails en tant que tableau).

5
répondu liquorvicar 2016-02-01 16:12:20

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
répondu jalalBK 2015-10-09 12:07:54

Pour obtenir la largeur et la hauteur de l'image, utilisez getimagesize(path_name), cette fonction retourne un tableau qui contient la hauteur, la largeur, image_type constante et autres infos. Par le code suivant, vous pouvez réaliser cela.

Note - Besoin de passer l'emplacement temporaire de l'image, et utilisez 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
répondu Channaveer Hakari 2014-02-06 07:44:22
 array getimagesize ( string $filename [, array &$imageinfo ] )

La fonction getimagesize() déterminera la taille d'un fichier image donné et retournera les dimensions avec le type de fichier et une chaîne de texte height/width à utiliser dans une balise IMG HTML 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
répondu Rizvan 2011-12-13 09:01:53

Très important-si vous utilisez Dreamweaver pour coder et que vous essayez d'obtenir la taille de l'image en utilisant le $_FILES[anyFormName][tmp_name], Il affichera une erreur dans live view.. Il m'a fallu un certain temps pour comprendre cela.

0
répondu user2976773 2016-02-01 12:39:54