2013-02-06 39 views
6

我正在使用codeigniter并尝试创建图像的缩略图。我成功了。但对于一些图像我不成功。我收到这个错误。“gd-jpeg,libjpeg:可恢复的错误:JPEG文件过早结束”在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); 

之后,一些图像拇指创建成功......但仍然没有解决其他一些....任何解决方案?

+0
+0

我已经加了我的代码........我也注意到刚才说的大拇指都被成功地创造现在,但我仍然得到警告。 – rafi

+0

您使用的CI版本是什么? – user20232359723568423357842364

回答

3

的问题是,error suppression没有开启的功能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; 
} 

} 
+0

我绝对不建议添加@错误抑制...在这里检查我的答案:https:// stackoverflow。COM /问题/ 1032161 /什么,是最使用的最符号式的PHP/36892995#36892995 – Andreas

2

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

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

因此,要解决的PHP警告,以弥补我曾经在PHP手册(http://php.net/manual/en/function.imagecreatefromjpeg.php)一个明确的解决办法看到损坏的图像功能LoadJpeg($ imgname)

为了防止进一步的失败我已经专注于为什么提供给imagecreatefromjpeg()函数的数据不是完整的原因。在我的情况下,这是网络洪水问题,导致一些图像到达损坏。

长话短说,你可能要检查恰好被送入imagecreatefromjpeg()函数什么努力扩大基础库等前..

2

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

这里@是错误抑制

相关问题