Как реализовать библиотеку изображений Imagine в Codeigniter

Я пытаюсь добавить библиотеку изображений 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
}
}

Ну, я был бы очень признателен за любую помощь в этом, в то же время я буду продолжать просматривать веб-страницы, чтобы посмотреть, смогу ли я найти ответ.

1

Решение

Как бы то ни было, после дня поиска я наконец нашел способ сделать это, и спасибо парсеру 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');
}
}

Теперь посмотрите, где вы сохранили новое изображение, и вы найдете новое изображение, размер которого был изменен.

Надеюсь, кто-то найдет это полезным.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]