anakadote/image-manager

Laravel 的图片缩放和裁剪包。

1.1.1 2023-09-05 17:33 UTC

This package is auto-updated.

Last update: 2024-09-05 19:39:58 UTC


README

此 Laravel 包提供了一种方便的图片缩放和裁剪方式。

首先,通过终端使用 Composer 安装此包。

composer require anakadote/image-manager

接下来,添加服务提供者。打开 config/app.php 并向 providers 数组添加一个新项目。

Anakadote\ImageManager\ImageManagerServiceProvider::class

最后一步是使用 artisan 将包资源移动到公共目录,同样在终端进行。

php artisan vendor:publish --provider="Anakadote\ImageManager\ImageManagerServiceProvider"

用法

此包可以通过 Laravel Facade 访问,因此只需在 Facade "ImageManager" 上调用其方法即可使用。

getImagePath($filename, $width, $height, $mode, $quality = 90)

示例 1:缩放或裁剪图片并获取新生成图片的 web 路径。

<img src="{{ ImageManager::getImagePath(public_path() . '/img/' . $image->filename, 250, 200, 'crop') }}" alt="">

示例 2:使用 HTML picture 元素显示图片的 webp 版本,如果浏览器支持。

<picture>
    <source srcset="{{ ImageManager::getImagePath(public_path() . '/img/' . $image->filename, 250, 200, 'crop', 90, 'webp') }}" type="image/webp">
    <img src="{{ ImageManager::getImagePath(public_path() . '/img/' . $image->filename, 250, 200, 'crop') }}" alt="">
</picture>

getImagePath() 方法有六个参数,前四个是必需的。

  1. 文件名 (字符串) 图像文件的完整限定名称。文件必须位于您的应用 public 目录中。您需要通过 Web 服务器授予对 public 目录及其子目录的写入权限。

  2. 宽度 (整数) 所需的图像宽度。

  3. 高度 (整数) 所需的图像高度。

  4. 输出模式 (字符串) 输出模式。选项有

    1. crop - 从垂直中间裁剪。
    2. crop-top - 从顶部裁剪。
    3. crop-bottom - 从底部裁剪。
    4. fit - 在保持宽高比的情况下适应。
    5. fit-x - 在保持宽高比的情况下适应给定的宽度。
    6. fit-y - 在保持宽高比的情况下适应给定的高度。
  5. 图像质量 - (整数,0 - 100) 默认值为 90。

  6. 格式 - (字符串) 将图像转换为给定的格式/扩展名,例如 "webp";

getUniqueFilename($filename, $destination)

在目标目录内生成一个唯一的文件名 — 以原始文件名为基础创建新文件名。

<?php

$unique_filename = ImageManager::getUniqueFilename($filename, public_path() . '/img/');

getUniqueFilename() 方法有两个参数:原始文件名和目标路径。

deleteImage($filename)

删除一个图像,包括从该图像生成的所有缩放和/或裁剪图像。

<?php

ImageManager::deleteImage(public_path() . '/img/' . $image->filename);

deleteImage() 方法有一个参数,即原始图像文件的完整限定名称。此方法将递归删除从原始图像文件生成的所有图像。