mwarcz/segami

PHP库,允许您编辑图像尺寸、转换图像格式、缓存生成的图像、记录缓存的生成图像的最后一次访问、从缓存中删除长时间未使用的图像,所有这些操作都基于图像名称。

v2.0.0 2024-06-29 10:32 UTC

This package is auto-updated.

Last update: 2024-09-29 11:10:39 UTC


README

Segami

Segami是一个简单的PHP库,允许编辑图像尺寸、转换图像格式、缓存生成的图像、记录缓存的生成图像的最后一次访问、从缓存中删除长时间未使用的图像,所有这些操作都基于图像名称中的后缀。

PHP version Packagist version MIT License

主要功能

  • 转换图像格式
    • 库的基本功能是将图像转换为各种位图格式(PNG、GIF、JPEG、WebP等)。
    • 示例:sample.png@.jpgsample.png@.webp
  • 创建图像裁剪
    • 可选功能允许您按所需尺寸裁剪图像。
    • 示例:sample.png@c200x100.pngsample.png@c300.jpg
  • 调整图像大小
    • 可选功能允许您在所需尺寸和填充类型(填充、包含、覆盖)中更改图像大小。
    • 示例:sample.png@r200x100_cover.pngsample.png@r300.jpg
  • 设置图像质量/压缩
    • 可选功能可设置图像质量/压缩,这会影响结果的文件大小和所选格式的压缩。
    • 示例:sample.png@q80.jpgsample.png@q50.webp
  • 存储生成的图像(缓存)
    • 库允许将生成的图像存储在缓存目录中,以便快速检索生成的图像,因为图像名称精确地定义了其属性。
    • 在后台规范化图像文件名以避免不必要的重复。
      • 示例1:sample.png@c200.png = sample.png@c200x200.png
      • 示例2:sample.png@r100x100_cover.png = sample.png@r100_r.png
  • 自动从缓存中删除长时间未使用的图像
    • 库提供删除先前存储的图像的功能,以帮助清理长时间未使用的图像的磁盘空间。
  • 限制器限制所需图像的名称
    • 可选地,可以限制修改原始图像的图像名称。
    • 建议在启用缓存存储时限制图像名称,以便潜在的攻击者难以攻击您。

要求

安装

Segami库可在 Packagist 上找到,并通过 Composer 安装是推荐的安装方式。

只需在终端中运行命令即可

composer require mwarcz/segami

或手动添加到 composer.json 文件中

{
    "require": {
        "php": "^8.1",
        "mwarcz/segami": "dev-master"
    }
}

注意:dev-master 替换为 特定版本约束。有关可用版本,请参阅 Packagist

使用

库可能的简单基本使用的示例

$segami = new Segami([
  // Selected path to dir with original images
  'path_to_original_images' => __DIR__ . '/original',
  // Selected path to dir with generated images
  'path_to_generated_images' => __DIR__ . '/generated',
  // Selected plugins for generating images
  'plugin' => [
    // CorePlugin is required minimum - enable core name parsing and image format conversion
    'core' => new CorePlugin(),
    // Optional ResizePlugin - enable/add possibility resize image
    'resize' => new ResizePlugin(),
    // Optional QualityPlugin - enable/add possibility quality image
    'quality' => new QualityPlugin(),
  ],
  // Selected limiter with rules for generated images
  'limiter' => new FreeImageLimiter(),
  // Selected image engine
  'image_factory' => new ImageImagickFactory(),
  // Selected logger for logging access to images
  'image_logger' => new ImageLoggerNone(),
]);

try {
  $segami->smartReturnImage($_GET['image'], isset($_GET['cache']));
} catch (\Throwable $e) {
  http_response_code(404);
}

存储库包含各种用例的样本集

关于Segami库的功能和使用案例的更详细信息,请参阅即将发布文档

许可证

Segami遵循MIT许可证

待办事项路线图

查看捷克语版本