Вопрос по php – Предупреждение: imagejpeg () [функция: imagejpeg]: gd-jpeg: библиотека JPEG сообщает о неисправимой ошибке

19

У меня есть установка WordPress в моей корневой папке,

до вчерашнего дня он работал нормально, но сегодня он дает следующую ошибку, я думаю, генерация миниатюр изображений

Warning: imagejpeg() [function:imagejpeg]: gd-jpeg: JPEG library reports unrecoverable error: in public_html/wp-includes/media.php on line 459

У кого-нибудь есть идеи относительно этого предупреждения?

пожалуйста, помогите мне

следующий код в строке 459

if ( !imagejpeg( $newimage, $destfilename, apply_filters( 'jpeg_quality', $jpeg_quality, 'image_resize' ) ) )
Как нам узнать, что находится на линии 459? zerkms
Включен ли GD на вашем сайте / хосте? Попробуйте добавить следующее в ваш файл .htaccess: AddType x-mapp-php5 .php AddHandler x-mapp-php5 .php swapnesh
просто запустите & lt;? php phpinfo (); ? & GT; файл и проверьте, включена ли библиотека GD или нет, если нет, измените настройки в php.ini или используйте метод ini_set (). проверьте эту ссылку для получения дополнительной информации о GDassets.webassist.com/how-tos/gd_library_ht.pdf swapnesh
Я сослал вам ссылку в формате PDF, и на моем сервере включен GD mack
до вчерашнего дня он работал нормально, у меня есть доступ cpanel, как я могу проверить, включен ли GD или нет? mack

Ваш Ответ

5   ответов
3


Ответ: мы загружаем PNG, и он конвертируется в JPG.
    Пожалуйста, проверьте с JPG, он работает. И нам нужно конвертировать PNG в JPG, чтобы другие функции были доступны, пожалуйста, проверьте на то же самое.

Ниже код будет полезен для преобразования изображений с использованием библиотеки GD.

//variable declare or parameter use
$originalImage ="1.jpg";
$quality=100; // for jpg good quality
$outputImage;   //for source file save.  


// jpg, png, gif or bmp?
    $exploded = explode('.',$originalImage);
    $ext = $exploded[count($exploded) - 1]; 

    if (preg_match('/jpg|jpeg/i',$ext))
        $imageTmp=imagecreatefromjpeg($originalImage);
    else if (preg_match('/png/i',$ext))
        $imageTmp=imagecreatefrompng($originalImage);
    else if (preg_match('/gif/i',$ext))
        $imageTmp=imagecreatefromgif($originalImage);
    else if (preg_match('/bmp/i',$ext))
        $imageTmp=imagecreatefrombmp($originalImage);
    else
        return 0;

    // quality is a value from 0 (worst) to 100 (best)
    imagejpeg($imageTmp, $outputImage, $quality);
    imagedestroy($imageTmp);
Хорошая работа @ shashik493 .. Это мне очень помогает .. спасибо большое
14

1) Check the space in disk

Ваша система должна иметь достаточно места на диске

2) Check the memory limit

Установите больше памяти в вашем php:

ini_set("memory_limit","256M");

3) Check the post_max_size and upload_max_filesize

Установите больше в своем файле htaccess:

php_value post_max_size 16M
php_value upload_max_filesize 6M

4) put @ in front of the function

@imagejpeg(..............);

Пункт 1) работал для меня.

Если это неисправимая ошибка и вы находитесь в цикле, он прервет цикл. Вы должны справиться с ошибкой.
Что значит @ перед ?!
@ YeppThat & APOS; SME@ это избегать предупреждающих сообщений
Не подавляйте предупреждения. Они там по причине. Обращайся с ними!
34

jpeg это неjpeg.

Я получил ту же ошибку, когда тестировал миниатюрный скрипт вPHP. Then I found that the header of my input file was png хотя его расширение было.jpg.

Итак, я отредактировал свой скрипт так, чтобы в случае возникновения ошибки при создании изображения изjpeg, он пытается создать его изpng (or gif if another error occurs).

Лучше использоватьexif_imagetype функция вместо грубой силы
Это реальный ответ
3

чтобы правильно определить тип изображения MIME. Изображение png с расширением jpg приведет к этой ошибке.

Чтобы избежать этой ошибки, вы должны получитьправильный тип пантомимы изображения.

function getImage($path) {
switch(mime_content_type($path)) {
  case 'image/png':
    $img = imagecreatefrompng($path);
    break;
  case 'image/gif':
    $img = imagecreatefromgif($path);
    break;
  case 'image/jpeg':
    $img = imagecreatefromjpeg($path);
    break;
  case 'image/bmp':
    $img = imagecreatefrombmp($path);
    break;
  default:
    $img = null; 
  }
  return $img;
}
0

imagecreatefromjpeg начал выдавать фатальные ошибки при попытке открыть неверный файл, который даже@ Знак не может поймать.

Вместо этого используйте следующее:

$im = imagecreatefromstring(file_get_contents($filename));
if ($im !== false) { ... }

Похожие вопросы