2013-02-06 14 views
6

Używam codeigniter i próbuję utworzyć kciuk obrazów. Udało mi się. ale w przypadku niektórych zdjęć nie udaje mi się. otrzymuję ten błąd."gd-jpeg, libjpeg: możliwy do naprawienia błąd: Przedwczesny koniec pliku JPEG" w 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 >> 

Użyłem tego kodu po wczytaniu biblioteki "image_lib".

ini_set('gd.jpeg_ignore_warning', 1); 

po tym, niektóre tworzenie obrazów kciuka zakończyło się sukcesem ... ale wciąż nie ma rozwiązania dla niektórych innych .... żadnego rozwiązania?

+0
+0

Dodałem mój kod ........ ja też zauważyłem, że właśnie teraz kciuki tworzenia powodzeniem teraz, ale nadal otrzymuję ostrzeżenie. – rafi

+0

jakiej wersji CI używasz? – user20232359723568423357842364

Odpowiedz

3

Problemem jest to, że error suppression nie jest włączony dla funkcji imagecreatefromjpeg

Najlepszym rozwiązaniem jest rozszerzenie biblioteki bazową i przeciążać metoda image_create_gd

Utwórz nowy plik ./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

Zdecydowanie nie polecam dodawania tłumienia błędów ... sprawdź moją odpowiedź tutaj: https: // stackoverflow.com/questions/1032161/what-is-use-of-the-symbol-in-php/36892995 # 36892995 – Andreas

2

Miałem dokładnie ten sam problem. Najpierw zapisywałem dane obrazu na lokalnym dysku twardym przed użyciem funkcji imagecreatefromjpeg(), aby dalej przetwarzać obraz.

W niektórych przypadkach lokalnie zapisany obraz został uszkodzony podczas procesu przechowywania i po wywołaniu przez imagecreatefromjpeg ($ imagePath); Ostrzeżenie PHP: imagecreatefromjpeg(): gd-jpeg, libjpeg: błąd możliwy do odzyskania: Wystąpił przedwczesny koniec pliku JPEG. pojawił się.

Tak aby rozwiązać ostrzeżenia PHP i nadrobić uszkodzonego obrazu użyłem jasno określony rozwiązanie w podręczniku PHP (http://php.net/manual/en/function.imagecreatefromjpeg.php) patrz funkcja LoadJpeg ($ imgName)

Aby uniknąć dalszych uszkodzeń Skoncentrowałem się na przyczynie, dla której dane dostarczane do funkcji imagecreatefromjpeg() nie były pierwiastkiem integrious. W moim przypadku był to problem z powodzią sieci, który spowodował uszkodzenie niektórych obrazów.

Krótko mówiąc, może chcesz sprawdzić, co dokładnie jest dostarczana do imagecreatefromjpeg() funkcji przed próbą rozszerzenia biblioteki bazy etc ..

2

spróbuj dodać @imagecreatefromjpeg ($ img) zamiast imagecreatefromjpeg ($ img)

tu jest błąd @ supresorowe

Powiązane problemy