codebuds/webp-converter

一个使用php GD将Jpeg、Png、Gif和Bmp转换为WebP的服务

0.7.0 2024-02-25 12:56 UTC

This package is auto-updated.

Last update: 2024-09-25 14:07:12 UTC


README

Code Coverage Badge

Webp转换器

我已经找到了一个非常好的webP转换包rosell-dk/webp-convert,它在许多情况下似乎都能正常工作。

然而,现在我的大多数项目将运行在PHP7.4和Symfony5上,所以我为这些情况创建了一个非常小的转换器。

使用方法

您可以使用composer来获取此包

composer require codebuds/webp-converter

例如,在Symfony控制器内部,您可以像以下那样使用它

use CodeBuds\WebPConverter\WebPConverter;

class PageController extends AbstractController
{
    /**
     * @Route("/", name="home")
     * @return Response
     */
    public function index()
    {
        $path  = "/var/www/symfony/public/images/test.png";
        try {
            $webp = WebPConverter::createWebpImage($path, ['saveFile' => true, 'quality' => 10]);
        } catch(Exception $e) {
            // Do something with the exception
        }
        return $this->render('page/home.html.twig');
    }

WebPConverter::createWebpImage静态函数需要图像的资源。

这可以是图像的路径,在这种情况下,函数本身将尝试从路径中创建Symfony\Component\HttpFoundation\File\File

如果您愿意,也可以直接传递File元素

public function index()
{
    // ...
    $file  = new File("/var/www/symfony/public/images/test.png");
    $webp = WebPConverter::createWebpImage($file);
    // ...
}

异常

可以抛出多个异常。首先使用Symfony File对guessExtension()函数进行操作。这允许我们检查提供的文件类型,并确保文件是否以.JPG、.jpeg、.jpg、...结尾,或者以其他方式结尾,但最终会是一个jpeg文件,这就是将要使用的文件。如果文件不是允许的类型(jpeg、png、gif和bmp)之一,将抛出异常。

如果提供的图像已经是webP图像,异常将发送此信息。

如果saveFile或force选项不是布尔值,或者quality选项不是介于1和100之间的整数,信息将包含在异常中。

filename、filenameSuffix和savePath选项需要是字符串。

如果saveFile设置为true且force默认值为false,且webP图像已存在,将抛出异常以通知用户如果要覆盖现有文件,则需要将force设置为true。

最后,如果文件是允许的类型之一,但在GD转换过程中出现错误,则将转发该异常。

返回值

如果没有异常,则返回将包含webP图像资源和如果要在原始目录中保存图像,则该图像的路径。

选项

您也可以设置选项,但这不是必需的。

saveFile选项默认为false。如前所述,这将仅返回资源,以及webP图像的可能路径。这意味着您需要运行gd函数来保存图像。

但是,如果您将此函数设置为true,图像将自动通过触发gd imagewebp函数来保存。

$saveFile = $options['saveFile'] ??= false;
if($saveFile)
{
    imagewebp($imageRessource, $webPPath, $quality);
}

如果您想直接保存文件,还有更多选项可以自定义webP文件及其位置

$path = '/var/www/symfony/public/images/a_file.jpg';

WebPConverter::createWebpImage(
    $path,
    [
    'saveFile' => true,
    'force' => true,
    'filename' => 'a_new_file',
    'filenameSuffix' => '_q50',
    'quality' => 50,
    'savePath' => '/var/www/symfony/public/webp'
    ]
);

此示例将创建WebP图像/var/www/symfony/public/webp/a_new_file_q50.webp

默认值

  • saveFile => false
  • force => false
  • quality => 80
  • filename => 将要转换的文件名相同。
  • savePath => 将要转换的文件的路径相同。
  • filenameSuffix => 空字符串

由于这是可能的,第二个选项是 quality,默认值为 80。只有当 saveFile 选项设置为 true 时(因为否则不会创建和保存图片),这个选项才有用。