glaivepro / image
为 Laravel 提供通过 URL 进行图片处理
Requires
- intervention/image: ^2.7
- laravel/framework: ^8.0|^9.0|^10.0
Requires (Dev)
- janaseta/php-cs: ^1.2
- orchestra/testbench: ^6.0|^7.0|^8.0
- phpunit/phpunit: ^9.0
This package is auto-updated.
Last update: 2024-09-10 14:22:38 UTC
README
为 Laravel 提供通过 URL 进行图片处理。它提供了一个 URL 接口,而实际的图片处理则由 Intervention 完成。
处理后的文件存储在请求的 URL 中,因此处理不会重复进行,但文件将由您的 web 服务器直接提供。
此包深受 folklore/image 的启发。
安装
composer require glaivepro/image
目前此包不发布任何配置,但处理是通过 intervention 完成的。如果您需要将驱动程序更改为 imagick,您应该 配置 intervention。
使用方法
让我们考虑一个公开可访问的图片,其 URL 为 example.com/img/some.jpg
。
此包将允许您通过 URL example.com/img/some-image(120x150).jpg
获取该文件的缩小和裁剪版本。处理后的图片将存储在 img
目录中,文件名为 some-image(120x150).jpg
,以便下一次对 example.com/img/some-image(120x150).jpg
的请求将由您的 web 服务器处理,提供存储的文件。
如果您想要缩小但保持宽高比,则可以跳过一个维度
example.com/img/some-image(200x_).jpg
— 约束宽度example.com/img/some-image(_x90).jpg
— 约束高度
还有其他一些处理方法可用
example.com/img/some-image(blur).jpg
example.com/img/some-image(blur(10)).jpg
example.com/img/some-image(pixelate(12)).jpg
example.com/img/some-image(resize(120,140)).jpg
— 不裁剪的缩放example.com/img/some-image(100x200-pixelate(10)).jpg
example.com/img/some-image(resize(120,140)-blur-pixelate(12)).jpg
生成 URL
可以通过我们的外观生成简单的(尺寸约束)URI
$uri = GPImage::url('img/some-image.jpg', 120, 150); // $uri is 'img/some-image-image(120x150).jpg'
注意 方法命名为
url
以与folklore/image
兼容。尽管这并不是作为一个即插即用的替代品,但如果您将Image
外观别名重新定义为指向GlaivePro\Image\GPImage
,则此情况将如此。
可以通过 asset
方法生成完整 URL
$url = GPImage::asset('img/some-image.jpg', 120, 150); // $url is 'https://example.com/img/some-image-image(120x150).jpg'
可以使用可字符串化的 Uri
类生成更复杂的 URI
use GlaivePro\Image\Uri; $uri = new Uri('pic.jpg'); $uri->size(20, 400); (string) $uri; // 'pic-image(20x400).jpg'
Uri
的实例也可以通过 GPImage
外观的 url
和 asset
方法生成
GPImage::asset('pic.jpg')->pixelate(12)->blur(10)->resize(100, 200); // https://example.com/pic-image(pixelate(12)-blur(10)-resize(100,200)).jpg
自定义过滤器
您可以注册自己的过滤器,这些过滤器将接收 intervention 实例和任何您可以根据需要处理的参数。
// Called via 'somepic-image(simplefilter).jpg' GPImage::filter('simplefilter', fn ($image) => $image->anyInterventionMethod()); // Called via 'somepic-image(complexfilter(10,20))' GPImage::filter('complexfilter', function($image, $arg1, $arg2) { $tempArg = $arg1 * 2; $image->someInterventionMethod($tempArg, $arg1); $image->someOtherInterventionMethod(); });