";gd-jpeg,libjpeg:可恢复错误:jpeg文件过早结束";在Codeigniter中


"gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file" in Codeigniter

我正在使用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 >>

我在"imagelib"库加载后使用了这段代码。

ini_set('gd.jpeg_ignore_warning', 1);

有什么解决方案吗?提前感谢!

问题是函数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;
}
}

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

这里@是错误抑制器

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

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

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

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

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

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