Intereting Posts
Есть ли способ, которым я применяю эту ошибку PHP, если я использую переменную uninitialized / undefined? Как получить изображение DPI в PHP Laravel Эффективная интеграция в Codeigniter считать вхождения всех букв в строке PHP Restler возвращает 404 код состояния, если index.php не включен в URL-адрес checked checkbox останется через разбивку на страницы Вводят значения различных значений в 2 поля Как проверить роль пользователя в symfony2 для URL-адресов, которые не подпадают под определенные шаблоны security.yml? Оптимизация базы данных MYSQL с использованием индексации PHP mysqli подготовил инструкцию для хранимой процедуры с параметром out Как конвертировать видео с помощью ffmpeg Как определить частичную вертикальную / горизонтальную линию в изображении? Сохранение значений в полях форм при неудачной проверке данных Количество число тегов <li> в <ul> на сервере с использованием PHP Создание многоуровневого массива с использованием parentIds в PHP

Imagecreatefromjpeg возвращает черное изображение после изменения размера

У меня есть сценарий для изменения размера загруженного изображения, но когда я его использую, он просто возвращает черный квадрат. Все сообщения об ошибках указывают на эту функцию:

function resizeImage($image,$width,$height,$scale) { $newImageWidth = ceil($width * $scale); $newImageHeight = ceil($height * $scale); $newImage = imagecreatetruecolor($newImageWidth,$newImageHeight); $source = imagecreatefromjpeg($image); imagecopyresampled($newImage,$source,0,0,0,0,$newImageWidth,$newImageHeight,$width,$height); imagejpeg($newImage,$image,90); chmod($image, 0777); return $image; } 

Мои журналы ошибок:

 PHP Warning: imagecreatefromjpeg() [<a href='function.imagecreatefromjpeg'>function.imagecreatefromjpeg</a>]: gd-jpeg: JPEG library reports unrecoverable error PHP Warning: imagecreatefromjpeg() [<a href='function.imagecreatefromjpeg'>function.imagecreatefromjpeg</a>]: 'img/[hidden].jpg' is not a valid JPEG file PHP Warning: imagecopyresampled(): supplied argument is not a valid Image resource 

Согласно ответу Марка B, вы, вероятно, можете проверить, является ли файл файлом JPG. (JPEG, JPG, jpg, jpeg расширения).

это может быть что-то вроде:

 $file = explode(".", $_POST['file']); $file_ext = $file[count($file)]; // Get the last thing in the array - in this way the filename can containg dots (.) $allowed_ext = array('jpg', 'JPG', 'jpeg', 'jpg'); if( in_array($file_ext, $allowed_ext ) { // The code for creating the image here. } 
  1. Проверьте, удалось ли сделать imagecreatetruecolor . Если новое изображение «большое», оно может превышать PHP memory_limit. Эта функция возвращает FALSE, если она по какой-либо причине не работает.
  2. То же самое с imagecreatefromjpeg() . Два отдельных изображения могут вписываться в пределы памяти, но вместе могут быть слишком большими. Исходное изображение также может не существовать. Эта функция возвращает FALSE, если она по какой-либо причине
  3. Проверьте, не imagecopyresampled() ли imagecopyresampled() – она ​​также возвращает FALSE при сбое.
  4. Проверьте, не сработало ли изображениеjpeg imagejpeg() – возможно, у вас нет прав на запись для любого файла, который вы указываете в $image . И снова эта функция возвращает FALSE при сбое.