thapp/jmg

即时图像处理。

维护者

详细信息

github.com/iwyg/jmg

源代码

问题

安装: 100

依赖: 5

建议: 0

安全: 0

星级: 1

关注者: 3

分支: 0

开放问题: 0

类型:

dev-processchain 2016-03-05 15:13 UTC

This package is not auto-updated.

Last update: 2024-09-26 00:14:38 UTC


README

即时图像处理:基于HTTP的图像处理库。

Author Source Code Software License

Build Status Code Coverage HHVM

安装

> composer composer require thapp/jmg

运行测试

> composer install
> vendor/bin/phpunit -c phpunit.xml.dist

快速开始

使用ImageResolver类,可以从参数字符串中轻松解析图像。

<?php

use Thapp\Jmg\ParamGroup;
use Thapp\Jmg\Image\Processor;
use Thapp\Jmg\Resolver\PathResolver;
use Thapp\Jmg\Resolver\LoaderReslover;
use Thapp\Jmg\Resolver\ImageResolver;

$processor = new Thapp\Jmg\Image\Processor(
	new Thapp\Image\Driver\Gd\Source
);

$images = new ImageResolver($source, $pathResolver, $loaderResolver);

if ($resource = $res->resolve('images/source.jpg', ParamGroup::fromString('2/400/400/5'))) {
    header('Content-Type: image/jpeg');
    echo $resource->getContents();
}

核心概念

源加载器和解析器

Jmg支持从多种源加载图像。在下面的示例中,假设我们有一个本地文件系统,其中包含我们的图像。

<?php

use Thapp\Jmg\Loader\FilesystemLoader;
use Thapp\Jmg\Resolver\LoaderReslover;
use Thapp\Jmg\Resolver\PathResolver;

$loaderResolver = new LoaderResolver;
$pathResolver = new PathResolver;

$pathResolver->add('local', __DIR__.'public/images');
$loaderResolver->add('local', new FilesystemLoader);

// tries to resolve a given prefix path;
if (!$loader === $loaderResolver->resolve('local')) // returns the FilesystemLoader {
    //then error
}

if (null === $path = $pathResolver->resolve('local')) {
    //then error
}

$src = $loader->load($path . '/image.jpg');

自定义加载器

您可以创建自己的加载器,例如,从远程源加载图像,如Amazon S3存储或FTP服务器。

您的自定义加载器必须实现Thapp\Jmg\Loader\LoaderInterface或简单地扩展自Thapp\Jmg\Loader\AbstractLoader

<?php

namespace Acme\Loaders;

use Thapp\Jmg\Loader\AbstractLoader

class AWSLoader extends AbstractLoader
{
	/**
	 * @throws Thapp\Jmg\Exception\SourceLoaderException
     * @return Thapp\Jmg\Resource\FileResourceInterface
	 */
    public function load($file)
    {
        //…
    }

	/**
	 * @return bool
	 */
    public function supports($path)
    {
        //…
    }
}