ngfw/webpconverter

一个Laravel包,自动将图片转换为WebP格式,高效地提供服务,并将转换后的文件缓存以优化性能。

v1.0.1 2024-08-25 14:57 UTC

This package is auto-updated.

Last update: 2024-09-25 15:06:18 UTC


README

Latest Version on Packagist Total Downloads

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)。请参阅许可文件以获取更多信息。