ngfw / webpconverter
一个Laravel包,自动将图片转换为WebP格式,高效地提供服务,并将转换后的文件缓存以优化性能。
Requires
- php: ^8.0
- guzzlehttp/guzzle: ^7.9
- illuminate/support: ^11.21
Requires (Dev)
- illuminate/config: ^11.21
- illuminate/container: ^11.21
- illuminate/filesystem: ^11.21
- league/flysystem: ^3.28
- phpoption/phpoption: ^1.9
- phpunit/phpunit: ^9.0
- vlucas/phpdotenv: ^5.6
README
WebP转换器包是您将图像转换为WebP格式的首选工具。它旨在使您的图像更小、更快、更高效,同时不牺牲质量。无论是处理JPEG、PNG,甚至是BMP,这个包都能轻松处理它们。它支持GD和Imagick驱动程序,根据您的服务器环境提供灵活性。而且,它是PSR-4兼容的,因此可以无缝地集成到您的现代PHP项目中。
安装
您可以通过Composer安装此包
composer require ngfw/WebpConverter
安装包后,您可能希望发布配置文件以根据项目的需求自定义设置。要发布配置文件,请运行以下命令
php artisan vendor:publish --tag="webp_converter"
这将创建一个位于您的配置目录中的webp_converter.php文件。在此文件中,您可以配置以下选项
driver:指定要使用的图像处理库(gd或imagick)。
quality:设置WebP转换的默认质量。
storage_path:定义转换后的WebP图像的默认存储路径。
示例配置文件(config/webp_converter.php)
return [ /* * Default Image Processing Driver */ 'driver' => env('WEBP_CONVERTER_DRIVER', 'gd'), /* * Default WebP Quality */ 'quality' => env('WEBP_CONVERTER_QUALITY', 80), /* * Storage Path */ 'storage_path' => env('WEBP_CONVERTER_STORAGE_PATH', 'public/webp_images'), ];
然后,您可以根据需要自定义这些设置,以更好地满足应用程序的需求。
使用方法
使用WebP转换器非常简单。以下是将其集成到项目中的方法
加载图像
您可以加载来自本地路径或远程URL的图像。该包足够智能,可以处理两者。
use Ngfw\WebpConverter\WebpConverterFacade as WebpConverter; // Load a local image // WebpConverter::load('/path/to/image.jpg'); // Load a remote image $imgUrl = "https://images.unsplash.com/photo-1724169913051-49f6ff76a070?q=80&w=3570&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"; $image = WebpConverter::load($imgUrl)->convert(); // /storage/webp_images/photo-1724169913051-49f6ff76a070.webp
生成缩略图的示例
$thumbnailUrl = WebpConverter::load($imgUrl) ->width(200) ->quality(70) // Set the quality for optimization ->optimize() // Apply optimization ->saveAs('optimized_thumbnail') ->convert(); // /storage/webp_images/optimized_thumbnail.webp
设置质量
想要控制输出WebP图像的质量吗?没问题。轻松调整质量。
$converter->quality(80); // Set quality to 80%
调整图像大小
需要调整图像大小吗?只需指定宽度和高度。
$converter->width(300)->height(200); // Resize to 300x200
优化图像
优化您的图像以进一步减小文件大小。该包应用智能优化以提供最佳结果。
$converter->optimize();
转换为WebP
最后,将您的图像转换为WebP。您甚至可以指定自定义的输出文件名。
$webpUrl = $converter->saveAs('optimized_image')->convert(); echo $webpUrl; // Outputs the URL to the converted WebP image
链式调用多个方法
您可以链式调用多个方法以实现简洁的单行转换
$webpUrl = $converter->load('/path/to/image.jpg') ->quality(90) ->width(500) ->height(300) ->optimize() ->saveAs('final_image') ->convert(); echo $webpUrl; // Outputs the URL to the optimized WebP image
提供图像服务
直接提供WebP图像,或获取原始数据以进行自定义操作。
$content = $converter->serve(true); // Serve the image as a response array
Blade示例
以下是如何在Blade模板中使用WebP转换器的几个示例
本地图像转换:使用Laravel的asset辅助函数转换本地图像
<img src="@webpConverter(asset('/images/png1.png'))" />
这将把位于public/images/png1.png的图像转换为WebP格式并提供服务。
远程图像转换
从远程URL转换图像
<img src="@webpConverter('https://images.unsplash.com/photo-1724217552369-22b256e395d9?q=80&w=3270&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D')" />
这将从指定的URL下载图像,将其转换为WebP格式,然后提供服务。
更新日志
请参阅更新日志以获取有关最近更改的更多信息。
贡献
请参阅贡献指南以获取详细信息。
安全
如果您发现任何安全问题,请通过电子邮件联系作者,而不是使用问题跟踪器。
致谢
许可
MIT许可(MIT)。请参阅许可文件以获取更多信息。