ripaclub/imgman

一个库,用于创建、修改、处理和存储来自任何协议的图像

v1.2.2 2016-05-18 15:34 UTC

This package is not auto-updated.

Last update: 2024-09-11 13:42:29 UTC


README

Latest Stable Version Build Status Coverage Status

ImgMan 是一个库,允许您从任何PHP支持的URL样式协议中创建各种图像版本。

您可以修改图像(例如,调整大小、裁剪、格式、内嵌、外嵌、旋转)并将不同的版本存储在您的配置中。

需求

  • PHP >= 5.5

  • Composer

  • Imagick(目前唯一支持的用于处理图像的适配器)

特性

ImgMan 具有多种特性

  • 核心

    包含执行图像操作引擎。目前只存在一个适配器:ImageMagick

  • 操作

    包含一个类 HelperPluginManager,它是一个 AbstractPluginManager,其中配置所有可以附加到版本的操作(即 CompressionCropFitInFitOutFormatResizeRotateScaleToHeightScaleToWidth

  • 存储

    ImgMan 允许您通过 StorageInterface 对象(例如 FileSystemMongo)将图像保存到多个持久层。

  • 图像

    包含用于图像的类

  • 服务

    一系列旨在实例化 ImgMan 服务的类。使用此服务,您可以将图像保存为在服务中配置的所有版本(grab 函数)。您还可以保存、更新和删除特定版本的图像

安装

在 php 扩展中安装 ImageImagick(版本 > 3.1.2)。

ripaclub/imgman 添加到您的 composer.json 文件中。

{
   "require": {
       "ripaclub/imgman": "0.5.*"
   }
}

配置

使用服务工厂(存储和服务的工厂)、插件管理器和 imagick 适配器配置服务管理器。

return [
    \\ ...
    'abstract_factories' => [
         // Load abstract service
        'ImgMan\Service\ImageServiceAbstractFactory',
         // Load abstract factory for mongo storage
        'ImgMan\Storage\Adapter\Mongo\MongoDbAbstractServiceFactory',
        'ImgMan\Storage\Adapter\Mongo\MongoAdapterAbstractServiceFactory',
         // Load abstract factory to FileSystem storage
        'ImgMan\Storage\Adapter\FileSystem\FileSystemAbstractServiceFactory'
          // Load abstract factory to aws storage previus import of aws/aws-sdk-php 3.17.6
        'ImgMan\Storage\Adapter\Cdn\Amazon\S3\S3ServiceAbstractFactory',
        'ImgMan\Storage\Adapter\Cdn\Amazon\CloudFront\CloudFrontServiceAbstractFactory',
        'ImgMan\Storage\Adapter\Cdn\AmazonAdapterAbstractFactory',
    ],
    'factories' => [
         // Load (operation) helper plugin manager
        'ImgMan\Operation\HelperPluginManager' => 'ImgMan\Operation\HelperPluginManagerFactory',
    ],
    'invokables' => [
         // Load adapter
        'ImgMan\Adapter\Imagick' => 'ImgMan\Core\Adapter\ImagickAdapter',
        'ImgMan\ResolverDefault' => 'ImgMan\Storage\Adapter\FileSystem\Resolver\ResolverDefault'
    ],
    \\ ...
    
];

您只能设置一个存储配置。配置存储(例如 Mongo),以保存图像的位置

return [
    \\ ...
    'imgman_mongodb' => [
        'MongoDb' => [
            'database' => 'imgManStorage'
        ]
    ],
    'imgman_adapter_mongo' => [
        'Storage' => [
            'collection' => 'image_test',
            'database' => 'MongoDb'
        ]
    ],
    \\ ...
 ];

例如,AWS 配置

return [
    \\ ...
       'imgman_amazon_client' => [
           'AmazonS3Client' => [
               'secret' => 'testSecret',
               'key' => 'testKey',
               'region' => 'testRegion',
               'version' => 'latest',
               'name' => 'S3'
           ],
           'AmazonCloudFrontClient' => [
               'secret' => 'testSecret',
               'key' => 'testKey',
               'region' => 'testRegion',
               'version' => 'latest',
               'name' => 'CloudFront'
           ]
       ],
       'imgman_amazon_s3_service' => [
           'S3Service' => [
               'client' => 'AmazonS3Client',
               'bucket' => 'test'
           ]
       ],
       'imgman_amazon_cloud_front_service' => [
           'CloudFrontService' => [
               'client' => 'AmazonCloudFrontClient',
               'domain' => 'testdomain'
           ]
       ],
       'imgman_amazon_adapter' => [
           'Storage' => [
               's3_client' => 'S3Service',
               'cloud_front_client' => 'CloudFrontService',
               'name_strategy' => 'default',
               'name_strategy_config' => [
                   'prefix' => 'test'
               ]
           ]
       ]
    \\ ...
 ];

例如,文件系统配置

return [
    \\ ...
        'imgman_adapter_filesystem' => [
            'Storage' => [
                'path' => DIR_PATH_,
                'resolver' => 'ImgMan\ResolverDefault'
            ],
        ]
    \\ ...
 ];

使用存储、助手、适配器和附加到版本的各个操作配置 ImgMan 服务

return [
    \\ ...
    'imgman_services' => [
        'ImgMan\Service\First' => [
            'adapter' => 'ImgMan\Adapter\Imagick',
            'storage' => 'Storage',
            'helper_manager' => 'ImgMan\Operation\HelperPluginManager',
            'renditions' => [
                'thumb' => [
                    'resize' => [
                        'width'  => 200,
                        'height' => 200,
                    ],
                    'compression' => [
                        'compression' => 90,
                        'compressionQuality' => 70,
                    ]
                ],
                'thumbmaxi' => [
                    'resize' => [
                        'width'  => 400,
                        'height' => 400,
                    ],
                ],
            ],
        ],
    ],
    \\ ...
 ];

用法

现在我们获取 IgmMan 服务,从文件流(文件系统)加载一张图片,并将其保存为 3 个版本(原始、缩略图和缩略图最大版)。

$imgMan = $this->getServiceLocator()->get('ImgMan\Service\First');
$image = new ImgMan\Image\Image(__DIR__. '/../../../name_image.png'); //the path can be also a URL
$imgMan->grab($image, '/first/name/identifier/');

最后,我们可以以这种方式恢复我们想要的图像版本

$imageOriginal = $imgMan->get('/first/name/identifier/', 'original');
$imageThumb = $imgMan->get('/first/name/identifier/', 'thumb');
$imageThumbMaxi = $imgMan->get('/first/name/identifier/', 'thumbmaxi');

Analytics