Я пытаюсь добавить библиотеку изображений Imagine в приложение Codeigniter, но я впервые сталкиваюсь с концепцией «пространства имен» и «использования», которую я просто не понимаю. Большинству библиотек обычно требуется включение, требование и т. Д., Чтобы они работали с вашей платформой, но я с трудом пытаюсь реализовать этот подход «использование пространства имен».
Теперь, как далеко я продвинулся, я скачал Lib, поместил папку Imagine в папку моих библиотек в CI, где у меня есть другое изображение Lib, называемое wideimage, которое у меня не было проблем с адаптацией к CI. Я стараюсь быть креативным и загружаю файлы библиотеки точно так же, как любой обычный файл библиотеки загружается в CI.
И вот тут-то и началась проблема, я начал получать много ошибок, таких как класс не найден, получил строку с ошибкой, и сразу же я подумал, что может понадобиться тот другой файл с таким классом, который теперь работает для некоторых ошибок, которые он сохранил давая мне, но это как каждый раз, когда загружается новый файл lib, появляется другая ошибка, и некоторые ошибки просто не исчезнут, даже если присутствует файл с основным классом.
Теперь я нашел статью о том, как установить автоматическую загрузку SPL, и получил следующий код
set_include_path('/application/libraries/Imagine' . PATH_SEPARATOR . get_include_path());
function imagineLoader($class) {
$path = $class;
$path = str_replace('\\', DIRECTORY_SEPARATOR, $path) . '.php';
if (file_exists($path)) {
include $path;
}
}
spl_autoload_register('\imagineLoader');
Но никогда не заставлял его работать, в этом случае он дал мне ошибку классов CI или файлов, которые не были найдены.
Теперь снова на мои вопросы, есть ли способ реализовать эту библиотеку изображений Imagine в Codeigniter?
Чтобы загрузить его через обычный загрузчик библиотеки или через файл автозагрузки?
Что-то вроде этого;
class Test extends CI_Controller {
function __construct()
{
parent::__construct();
$this->load->library('imagine');
}
public function index()
{
// Do some cool things with the image lib functions
}
}
Ну, я был бы очень признателен за любую помощь в этом, в то же время я буду продолжать просматривать веб-страницы, чтобы посмотреть, смогу ли я найти ответ.
Как бы то ни было, после дня поиска я наконец нашел способ сделать это, и спасибо парсеру SimplePie Feed, я знал, что видел подобный код в прошлом.
Во всяком случае, я на самом деле посмотрел на файл autolader.php simplepie, который загружает классы для использования simplepie, и я просто сделал несколько небольших изменений в коде, чтобы иметь возможность использовать Imagine Lib в Codeigniter.
Итак, вот шаги и код:
1 загрузите библиотеку Imagine по адресу:
https://github.com/avalanche123/Imagine
2 Скопируйте папку Imagine в папку с библиотеками приложений CI: application / library
3 Создайте файл и назовите его idea_autoload.php
4 добавьте следующий код в файл idea_autoload.php
set_include_path('/application/libraries/Imagine' . PATH_SEPARATOR . get_include_path());
function imagineLoader($class) {
$path = $class;
$path = str_replace('\\', DIRECTORY_SEPARATOR, $path) . '.php';
if (strpos($class, 'Imagine') !== 0)
{
return;
}
include_once $path;
}
spl_autoload_register('\imagineLoader');
Теперь самое интересное на вашем контроллере:
require_once('./application/libraries/imagine_autoloader.php');
// Here you can use the imagine imagine tools
use Imagine\Image\Box;
use Imagine\Image\Point;
class Testing extends CI_Controller {
function __construct()
{
parent::__construct();
}
function index($offset = 0)
{
$imagine = new \Imagine\Gd\Imagine();
$image = $imagine->open('/path/to/image.jpg');
$thumbnail = $image->thumbnail(new Imagine\Image\Box(100, 100));
$thumbnail->save('/path/to/thumnail_image.jpg');
}
}
Теперь посмотрите, где вы сохранили новое изображение, и вы найдете новое изображение, размер которого был изменен.
Надеюсь, кто-то найдет это полезным.
Других решений пока нет …