【问题标题】:Warning: imagejpeg() [function:imagejpeg]: gd-jpeg: JPEG library reports unrecoverable error警告:imagejpeg() [function:imagejpeg]: gd-jpeg: JPEG library 报告不可恢复的错误
【发布时间】:2012-05-16 04:10:31
【问题描述】:

我在我的根文件夹中安装了 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 行的内容?
  • 您的站点/主机上是否启用了 GD?,尝试将以下内容添加到您的 .htaccess 文件中: AddType x-mapp-php5 .php AddHandler x-mapp-php5 .php
  • 直到昨天它工作正常,我确实有 cpanel 访问权限,我如何检查 GD 是否启用?
  • 只要运行 文件并检查是否启用了 GD 库,如果没有更改 php.ini 中的设置或使用 ini_set() 方法..检查此链接以获取有关 GD 的更多信息assets.webassist.com/how-tos/gd_library_ht.pdf
  • 我已经给你推荐了 pdf 链接,并且我的服务器中启用了 GD

标签: php wordpress


【解决方案1】:

您可能试图从jpeg 创建一个不是jpeg 的图像。

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

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

【讨论】:

  • 这才是真正的答案
  • 最好使用exif_imagetype函数而不是暴力破解
【解决方案2】:

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 点)对我有用。

【讨论】:

  • 前面的@是什么意思?!
  • @YeppThat'sMe @ 是为了避免警告信息
  • 不要抑制警告。他们在那里是有原因的。处理他们!
  • 如果它是不可恢复的错误并且您处于循环中,它将中断循环。你必须处理错误。
【解决方案3】:

在 PHP7 上,当您尝试打开无效文件时,imagecreatefromjpeg 开始抛出致命错误,即使 @ 符号也无法捕获。

改用以下内容:

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

【讨论】:

    【解决方案4】:

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

    为避免此错误,您必须获取图像的correct mime type

    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;
    }
    

    【讨论】:

      【解决方案5】:

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

      答案是:我们正在上传 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 ..它对我很有帮助..非常感谢
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-25
      • 1970-01-01
      • 2015-10-12
      相关资源
      最近更新 更多