2013-02-06 22 views
6

Tôi đang sử dụng trình viết mã và cố gắng tạo ngón tay cái của hình ảnh. tôi đã thành công. nhưng đối với một số hình ảnh tôi không thành công. Tôi nhận được lỗi này."gd-jpeg, libjpeg: lỗi có thể phục hồi: Kết thúc sớm của tệp JPEG" trong 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 >> 

tôi đã sử dụng mã này sau khi tải thư viện 'image_lib'.

ini_set('gd.jpeg_ignore_warning', 1); 

sau đó một số hình ảnh ngón tay cái tạo thành công ... nhưng vẫn không có giải pháp cho một số người khác .... bất kỳ giải pháp nào?

+0

dán mã của bạn – user20232359723568423357842364

+0

tôi đã thêm mã của tôi ........ tôi cũng đã nhận thấy chỉ bây giờ mà ngón tay cái đang tạo thành công bây giờ, nhưng tôi vẫn nhận được cảnh báo. – rafi

+0

bạn đang sử dụng phiên bản CI nào? – user20232359723568423357842364

Trả lời

3

Vấn đề là error suppression không được bật cho hàm imagecreatefromjpeg

Lựa chọn tốt nhất là để mở rộng thư viện cơ sở và quá tải phương pháp image_create_gd

Tạo một file mới ./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

Tôi chắc chắn không khuyên bạn nên thêm @ ức chế lỗi ... kiểm tra câu trả lời của tôi ở đây: https: // stackoverflow.com/questions/1032161/what-is-the-use-of-the-symbol-in-php/36892995 # 36892995 – Andreas

2

Tôi đã gặp chính xác cùng một vấn đề. Trước tiên, tôi đã lưu trữ dữ liệu hình ảnh trên ổ cứng cục bộ trước khi sử dụng chức năng imagecreatefromjpeg() để xử lý hình ảnh thêm.

Vào những thời điểm nhất định, hình ảnh được lưu trữ cục bộ bị hỏng trong quá trình lưu trữ và khi được gọi là imagecreatefromjpeg ($ imagePath); Cảnh báo PHP: imagecreatefromjpeg(): gd-jpeg, libjpeg: lỗi có thể phục hồi: Đã xảy ra kết thúc sớm của tệp JPEG. xuất hiện.

Vì vậy, để giải quyết những lời cảnh báo PHP và để bù đắp cho hình ảnh bị lỗi tôi đã sử dụng một giải pháp rõ ràng trong cuốn hướng dẫn PHP (http://php.net/manual/en/function.imagecreatefromjpeg.php) thấy chức năng LoadJpeg ($ imgname)

Để ngăn chặn những thất bại hơn nữa Tôi đã tập trung vào lý do tại sao dữ liệu được cung cấp cho imagecreatefromjpeg() chức năng không tích hợp ngay từ đầu. Trong trường hợp của tôi, đó là vấn đề lũ lụt mạng đã khiến một số hình ảnh bị hỏng.

câu chuyện dài ngắn, bạn có thể muốn kiểm tra chính xác những gì đang được cung cấp vào imagecreatefromjpeg() chức năng trước khi cố gắng mở rộng thư viện cơ sở vv ..

2

thử thêm @imagecreatefromjpeg ($ img) thay vì imagecreatefromjpeg ($ img)

đây @ là lỗi ức chế

Các vấn đề liên quan