rostenkowski/resize

此软件包最新版本(v4.0)的许可证信息不可用。

v4.0 2017-10-04 04:08 UTC

README

Nette Framework的高性能图像处理组件(Nette 框架)

Build Status Coverage Status Code Climate Scrutinizer Code Quality

安装

手动下载最新软件包,或者更好的方法是使用Composer

composer require rostenkowski/resize

配置

最佳方式是在应用配置中使用内置的Nette DI容器扩展,通常位于app/config.neon。您可以将配置的imageStore部分放置在您的本地配置文件中。

extensions:
    resize: Rostenkowski\Resize\Extension

resize:
    storageDir: %baseDir%/data/images
    cacheDir:   %baseDir%/www/images
    basePath:   /images/

手动配置

如果您不使用DI扩展,则应在Latte引擎中注册图像宏,具体操作方式请参阅文档。

nette:
    latte:
        macros:
            - Rostenkowski\Resize\Macro\ImageMacro::install

可以在展示器中手动创建存储,或以此方式注册为服务。

services:
    - images: Rostenkowski\ImageStore\ImageStorage("%baseDir%/data/images", "%baseDir%/www/images", "/images/")

要求

  • PHP 推荐使用 5.6,最低要求 5.5
  • Nette 推荐使用 2.3,最低要求 2.2

此库已针对PHP 5.55.67.0 以及Nette 2.3 进行了测试,但它应该与之前的稳定版Nette 2.2 和最新的Nette 2.4-dev 兼容。

有关依赖项的完整列表,请参阅composer.json文件。

API

要查看完整的API文档,请导航到docs/api/目录并打开index.html文件。

存储

<?php

use Rostenkowski\Resize\Meta;
use Rostenkowski\Resize\File;
use Rostenkowski\Resize\Request;
use Rostenkowski\Resize\ImageStorage;
use Nette\Application\Responses\FileResponse;
use Nette\Http\FileUpload;
use Nette\Utils\Image;

// create storage
$storage = new ImageStorage('/data/images', '/www/images', '/images/');

// add an image from file
$storage->add(File $image, Meta $meta);

// add a HTTP uploaded file
$storage->upload(FileUpload $file, Meta $meta);

// check that an image already exists in the storage
$storage->contains(Meta $meta);

// fetch original
$storage->original(Meta $meta);

// rotate image
$storage->rotate(Meta $meta, 90); // Meta

// downloaded requested thumbnail
$storage->download(Request $request); // Nette\Application\Responses\FileResponse

// fetch requested thumbnail
$storage->fetch(Request $request);

// link requested thumbnail
$storage->link(Request $request);

// output requested thumbnail to stdout
$storage->send(Request $request);

技术概述

  • 图像以常规文件形式存储在指定目录中。
  • 文件以目录树的形式组织,最多包含256²个目录,采用两层结构,因此在一个目录中约有1K个文件时,存储可以存储约6.5M的图像,而不会影响性能。
  • 由于使用了用于创建目录路径的图像哈希,目录树得到了良好的平衡。
  • 存储仅存储一个文件,即使同一图像存储多次也是如此。
  • 图像缩略图按需创建并缓存在缓存目录中。

贡献

您可以随意打开一个问题Pull Request

此库的源代码完全由Nette Tester测试覆盖。

要运行测试套件,请使用Composer安装依赖项,然后在linux上运行bin/run-tests.sh脚本。在windows上,您可以在例如git bash中运行:bin/run-tests-win.sh

bin/run-tests.sh
 _____ ___  ___ _____ ___  ___
|_   _/ __)( __/_   _/ __)| _ )
  |_| \___ /___) |_| \___ |_|_\  v2.0.x

PHP 5.6.5 (cgi-fcgi) | php-cgi -n -c tests/php.ini | 1 thread

.............

OK (13 tests, 2.7 seconds)

要检查代码覆盖率,请参阅docs/coverage.html文件。

示例代码

请参阅使用维基页面。