如何在Codeigniter中实现Imagine图像库

时间:2015-01-27 09:55:17

标签: php codeigniter php-imagine

我正在尝试将Imagine图像库添加到Codeigniter应用程序中,但这是我第一次遇到"命名空间"和"使用"我不明白的概念。大多数Libs通常需要一个include,require等...来使它们与你的框架一起工作但是我很难实现这个"命名空间","使用"方法

现在我得到了多远,我下载了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 个答案:

答案 0 :(得分:3)

无论如何看了一天之后我终于找到了办法,并且感谢simplepie feed解析器,我知道我过去曾见过类似的代码。

无论如何,我实际上查看了simplepie autoloader.php文件,该文件加载类以使用simplepie,我只是对代码进行了一些小调整,以便能够在Codeigniter中使用Imagine Lib。

以下是步骤和代码:

1下载Imagine Library: https://github.com/avalanche123/Imagine

2将Imagine文件夹复制到CI应用程序库文件夹:application / libraries

3创建一个文件并将其命名为imag_autoload.php

4将以下代码添加到imag_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');
    }
}

现在看看你保存新图像的位置,你会发现一个重新调整大小的新图像。

希望有人会觉得这很有用。