Проверьте размеры изображения (высоту и ширину) перед загрузкой изображения с использованием PHP - PullRequest
24 голосов
/ 13 декабря 2011

Как я могу проверить высоту и ширину перед загрузкой изображения, используя PHP.

Должен ли я сначала загрузить изображение и использовать "getimagesize ()"? Или я могу проверить это перед загрузкой с помощью 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';
}


}







?>

Ответы [ 8 ]

94 голосов
/ 15 ноября 2012

Мы можем легко сделать это с помощью временного файла.

$image_info = getimagesize($_FILES["file_field_name"]["tmp_name"]);
$image_width = $image_info[0];
$image_height = $image_info[1];
8 голосов
/ 13 декабря 2011

Вот как я это решил.

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

if ($width > 1000 || $height > 1000)
{
echo '<p>iamge is to big';
unlink('../bilder/'.$filnamn);
}
5 голосов
/ 13 декабря 2011

Если файл находится в массиве $_FILES (поскольку он был выбран в многоэлементной форме), он уже загружен на сервер (обычно в / tmp или аналогичный путь к файлу), поэтому вы можете просто продолжить и использоватьgetimagesize() функция в php для получения размеров (включая все детали в виде массива).

4 голосов
/ 09 октября 2015

Эта работа для меня

$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 голосов
/ 13 декабря 2011

Вам нужно что-то, что выполняется на клиенте, прежде чем произойдет фактическая загрузка.
С помощью (на стороне сервера) php вы можете проверить размерность только после того, как файл был загружен или с помощью upload hooks возможно во время загрузки изображения (из данных заголовка файла изображения).

Таким образом, у вас есть варианты flash, может быть html5 с его FileAPI (еще не проверял, может быть, это невозможно), java-applet, silverlight, ...

3 голосов
/ 06 февраля 2014

Чтобы получить ширину и высоту изображения, используйте getimagesize(path_name), эта функция возвращает массив, который содержит высоту, ширину, константу image_type и другую информацию, связанную с изображением.С помощью следующего кода вы можете добиться этого.

Примечание - необходимо передать временное местоположение изображения и использовать следующий фрагмент кода перед использованием move_upload_file(), иначе оно будет перемещатьсяфайл к пути назначения, и вы не получите желаемый результат для изображения

$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
}
0 голосов
/ 20 февраля 2014

Очень важно - если вы используете Dreamweaver для кодирования и пытаетесь получить размер изображения с помощью $_FILES[anyFormName][tmp_name], в режиме реального времени будет отображаться ошибка. Мне потребовалось время, чтобы понять это.

0 голосов
/ 13 декабря 2011
 array getimagesize ( string $filename [, array &$imageinfo ] )

Функция getimagesize () будет определять размер любого данного файла изображения и возвращать размеры вместе с типом файла и текстовой строкой высоты / ширины, которые будут использоваться внутри обычного HTML-тега IMG и соответствующего типа содержимого HTTP.

Для получения дополнительной информации посетите сайт: http://www.php.net/manual/en/function.getimagesize.php

...