anakadote / image-manager
Laravel 的图片缩放和裁剪包。
1.1.1
2023-09-05 17:33 UTC
Requires
- php: ^7.0 || ^8.0
- enshrined/svg-sanitize: ^0.15.4
- illuminate/support: >=5.0
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() 方法有六个参数,前四个是必需的。
-
文件名 (字符串) 图像文件的完整限定名称。文件必须位于您的应用
public
目录中。您需要通过 Web 服务器授予对public
目录及其子目录的写入权限。 -
宽度 (整数) 所需的图像宽度。
-
高度 (整数) 所需的图像高度。
-
输出模式 (字符串) 输出模式。选项有
- crop - 从垂直中间裁剪。
- crop-top - 从顶部裁剪。
- crop-bottom - 从底部裁剪。
- fit - 在保持宽高比的情况下适应。
- fit-x - 在保持宽高比的情况下适应给定的宽度。
- fit-y - 在保持宽高比的情况下适应给定的高度。
-
图像质量 - (整数,0 - 100) 默认值为 90。
-
格式 - (字符串) 将图像转换为给定的格式/扩展名,例如 "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() 方法有一个参数,即原始图像文件的完整限定名称。此方法将递归删除从原始图像文件生成的所有图像。