Проверьте размеры изображения (высота и ширина) перед загрузкой изображения с помощью PHP

Как проверить высоту и ширину перед загрузкой изображения с помощью 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'; } } ?> 

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

Таким образом, ваши параметры flash, возможно, html5 с его FileAPI (не тестировали, возможно, это не выполнимо), java-апплет, silverlight, …

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

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

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

 $test = getimagesize('../bilder/' . $filnamn); $width = $test[0]; $height = $test[1]; if ($width > 1000 || $height > 1000) { echo '<p>iamge is to big'; unlink('../bilder/'.$filnamn); } 

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

Чтобы получить ширину и высоту изображения, используйте getimagesize(path_name) , эта функция возвращает массив, который содержит константу height, width, 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 } 

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

 $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; } 
  array getimagesize ( string $filename [, array &$imageinfo ] ) 

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

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

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