23

我在我的根文件夹上安装了 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' ) ) )
4

5 回答 5

35

您可能试图从中创建一个图像jpeg不是jpeg.

我在PHP中测试缩略图脚本时遇到了同样的错误。然后我发现我的输入文件的标题是png虽然它的扩展名是.jpg.

所以,我编辑了我的脚本,以便如果在创建图像时出现错误jpeg,它会尝试从创建它png (或者gif如果发生另一个错误)

于 2014-01-10T13:20:28.990 回答
17

1)检查磁盘空间

您的系统必须有足够的磁盘空间

2)检查内存限制

在您的 php 中设置更多内存:

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

3) 检查 post_max_size 和 upload_max_filesize

在您的 htaccess 文件中设置更多:

php_value post_max_size 16M
php_value upload_max_filesize 6M

4)把@放在函数前面

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

第 1 点)对我有用。

于 2012-05-19T19:17:53.513 回答
5

您必须使用函数来正确确定图像的 mime 类型。具有 jpg 扩展名的 png 图像将导致此错误。

为避免此错误,您必须获得正确的 mime 类型的图像。

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;
}
于 2017-06-14T07:08:34.247 回答
4

我有同样的错误。但现在我解决了同样的问题。

答案是:我们正在上传 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);
于 2015-06-19T13:15:08.813 回答
4

在 PHP7 上imagecreatefromjpeg,当您尝试打开无效文件时开始抛出致命错误,甚至@标志都无法捕获。

请改用以下内容:

$im = imagecreatefromstring(file_get_contents($filename));
if ($im !== false) { ... }
于 2018-04-06T07:40:31.710 回答