7

我正在使用 CodeIgniter 并尝试创建图像缩略图。我在某些情况下是成功的,但在某些情况下却失败了。我收到以下错误 -

<< A PHP Error was encountered
Severity: Notice

Message: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file

Filename: libraries/Image_lib.php

Line Number: 1155 >>

我在“image_lib”库加载后使用了这个代码。

ini_set('gd.jpeg_ignore_warning', 1);

任何解决方案?提前致谢!

4

4 回答 4

3

问题是该功能没有开启错误抑制imagecreatefromjpeg

最好的选择是扩展基础库并重载image_create_gd方法

创建一个新文件./application/libraries/MY_Image_lib.php

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

Class MY_Image_lib extends CI_Image_Lib {

function image_create_gd($path = '', $image_type = '')
{
    if ($path == '')
        $path = $this->full_src_path;

    if ($image_type == '')
        $image_type = $this->image_type;


    switch ($image_type)
    {
        case     1 :
                    if ( ! function_exists('imagecreatefromgif'))
                    {
                        $this->set_error(array('imglib_unsupported_imagecreate', 'imglib_gif_not_supported'));
                        return FALSE;
                    }

                    return @imagecreatefromgif($path);
            break;
        case 2 :
                    if ( ! function_exists('imagecreatefromjpeg'))
                    {
                        $this->set_error(array('imglib_unsupported_imagecreate', 'imglib_jpg_not_supported'));
                        return FALSE;
                    }

                    return @imagecreatefromjpeg($path);
            break;
        case 3 :
                    if ( ! function_exists('imagecreatefrompng'))
                    {
                        $this->set_error(array('imglib_unsupported_imagecreate', 'imglib_png_not_supported'));
                        return FALSE;
                    }

                    return @imagecreatefrompng($path);
            break;

    }

    $this->set_error(array('imglib_unsupported_imagecreate'));
    return FALSE;
}

}
于 2013-02-06T18:21:33.057 回答
3

尝试添加 @imagecreatefromjpeg($img) 而不是 imagecreatefromjpeg($img)

这里@是错误抑制器

于 2015-10-30T13:38:13.227 回答
2

我遇到了完全相同的问题。在使用函数imagecreatefromjpeg()进一步对图像进行后处理之前,我首先将图像数据存储在本地硬盘上。

在某些时候,本地存储的图像在存储过程中以及被imagecreatefromjpeg($imagePath) 调用时被损坏;PHP 警告: imagecreatefromjpeg(): gd-jpeg, libjpeg: 可恢复错误:JPEG 文件过早结束。出现。

因此,为了解决 PHP 警告并弥补损坏的图像,我在 PHP 手册(http://php.net/manual/en/function.imagecreatefromjpeg.php)中使用了明确定义的解决方案,请参阅函数LoadJpeg($imgname )

为了防止进一步的失败,我首先关注提供给imagecreatefromjpeg()函数的数据不完整的原因。就我而言,是网络洪水问题导致某些图像到达损坏。

长话短说,在尝试扩展基础库等之前,您可能需要检查到底提供了哪些内容到imagecreatefromjpeg()函数中。

于 2014-10-08T17:47:37.747 回答
0

当我收到此错误时,我检查了我的 JPG 文件是否已损坏。考虑检查你的。

于 2020-04-10T22:13:32.933 回答