Проверьте размеры изображения (высота и ширина) перед загрузкой изображения с помощью 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';
}
}
?>
Ответы
Ответ 1
Вам нужно что-то, что выполняется на клиенте до фактической загрузки.
С помощью (серверной) php вы можете проверить размер только после того, как файл был загружен или загрузить крючки, возможно, пока изображение загружено (из данные заголовка файла изображения).
Итак, ваши параметры - flash, может быть, html5 с его FileAPI (не проверял это, возможно, это не выполнимо), java-апплет, silverlight,...
Ответ 2
Мы можем сделать это с помощью файла temp.
$image_info = getimagesize($_FILES["file_field_name"]["tmp_name"]);
$image_width = $image_info[0];
$image_height = $image_info[1];
Ответ 3
Вот как я это решил.
$test = getimagesize('../bilder/' . $filnamn);
$width = $test[0];
$height = $test[1];
if ($width > 1000 || $height > 1000)
{
echo '<p>iamge is to big';
unlink('../bilder/'.$filnamn);
}
Ответ 4
Если файл находится в массиве $_FILES
(поскольку он был выбран в форме Multipart), он уже был загружен на сервер (обычно в /tmp или аналогичный путь к файлу), поэтому вы можете просто использовать и использовать getimagesize()
в php, чтобы получить размеры (включая все детали как массив).
Ответ 5
Чтобы получить ширину и высоту изображения, используйте 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
}
Ответ 6
Эта работа для меня
$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;
}
Ответ 7
array getimagesize ( string $filename [, array &$imageinfo ] )
Функция getimagesize() определит размер любого заданного файла изображения и вернет размеры вместе с типом файла и текстовой строкой высоты/ширины, которая будет использоваться в обычном теге HTML IMG и соответствующем типе содержимого HTTP.
Для получения дополнительной информации посетите сайт:
http://www.php.net/manual/en/function.getimagesize.php
Ответ 8
Очень важно - если вы используете Dreamweaver для кодирования, и вы пытаетесь получить размер изображения с помощью $_FILES[anyFormName][tmp_name]
, он отображает ошибку в режиме реального времени. Мне потребовалось некоторое время, чтобы понять это.