2013-02-06 66 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)

這裏@是錯誤抑制

相關問題