Я использую 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);
после этого некоторые изображения создания пальца были успешными … но все же нет решения для некоторых других … любое решение?
Проблема в том, что подавление ошибок не включено для функции 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 () для последующей обработки изображения.
В определенные моменты локально сохраненное изображение было повреждено во время процесса хранения и когда вызвано imagecreatefromjpeg ($ imagePath); PHP Warning: imagecreatefromjpeg (): gd-jpeg, libjpeg: восстанавливаемая ошибка: произошел преждевременный конец файла JPEG. появился.
Поэтому, чтобы разрешить предупреждения PHP и восполнить поврежденное изображение, я использовал четко определенное решение в руководстве PHP ( http://php.net/manual/en/function.imagecreatefromjpeg.php ), чтобы увидеть функцию LoadJpeg ($ imgname )
Чтобы предотвратить дальнейшие сбои, я сосредоточился на том, почему данные, предоставленные для функции imagecreatefromjpeg (), не были в первую очередь неинтегрированы. В моем случае это была проблема сетевого потока, которая вызывала повреждение некоторых изображений.
Короче говоря, вы можете проверить, что именно передается в функцию imagecreatefromjpeg (), прежде чем пытаться расширить базовую библиотеку и т. Д.
Попробуйте добавить @imagecreatefromjpeg ($ img) вместо imagecreatefromjpeg ($ img)
здесь @ является подавителем ошибок