teamzac/cloudinary-url-builder

流畅的Cloudinary URL构建器

v0.1.1 2020-10-26 17:51 UTC

This package is auto-updated.

Last update: 2024-09-27 02:21:30 UTC


README

Latest Version on Packagist

Cloudinary很棒,但我想有一个比官方包更富有表现力的方式来对图像应用转换。这并不是官方API客户端的替代品,它只是提供了一种基于你希望应用的转换来生成图像URL的不同方法。它还提供了一种创建预定义的转换组作为预设的方法。

安装

您可以通过composer安装此包

composer require team-zac/cloudinary-url-builder

用法

此包在内部使用官方的Cloudinary PHP库,它具有各种全局配置选项。如果您正在使用Laravel,此包自动注册的服务提供程序将根据此包的配置值为您设置默认的云名称。

您可以通过向.env文件中添加一个名为CLOUDINARY_CLOUD_NAME的键来设置此值。如果您想接管包的配置文件,可以运行以下命令

php artisan vendor:publish

并选择TeamZac\Cloudinary\ServiceProvider选项。

核心功能由TeamZac\Cloudinary\Builder类提供。您可以直接访问它,或者利用外观来应用转换并生成图像URL。

Cloudinary::id('image.jpg')
	->resize(300, 450, 'crop')
	->removeRedEye()
	->sepia(30)
	->getUrl();

要构建预定义的转换集,您可以创建Builder类的子类并重写initializePreset方法。在那里,您可以应用您想要的所有转换。该方法在构建URL之前被调用,并且如果您的预设类打算重用相同的实例,则只调用一次。

<?php

namespace App\Presets;

use TeamZac\Cloudinary\Builder;

class MyPreset extends Builder 
{
	protected function initializePreset()
	{
		$this->resize(300, 450, 'crop')
			->removeRedEye()
			->sepia(30);
	}	
}

您可以直接实例化自己的预设类,或者您可以在服务提供程序中扩展Builder来命名您的预设。然后,您可以使用preset方法创建一个新的实例

// in a service provider
	public function boot() 
	{
		Cloudinary::extend('my-preset', function() {
			return new MyPreset();
		});
	}

// in your application code
	$url = Cloudinary::preset('my-preset')->id('image.jpg')->getUrl();

这可以用于像博客上的英雄图像这样的东西,您想要对每个图像应用类似的转换,但可能有亮色和暗色变体。您可以将转换预设存储在帖子模型中,并在模板中动态引用它。

Cloudinary提供的许多效果要么是无参数的,要么只允许一个值。在许多情况下,我们已包含Cloudinary使用的相同默认值,因此如果您对默认值满意,则可以省略传递任何参数。我们还需要将Cloudinary的默认值添加到某些效果方法中。

在某些情况下,效果可能更复杂。例如,您可以使用outline方法创建轮廓效果,并可选地使用回调来自定义其他选项

// with just the main options
Cloudinary::id('image.jpg')
	->outline('inner', 5, 1000);

// with a callback as the first parameter. You'll receive an instance of TeamZac\Cloudinary\Transformations\PendingOutline
Cloudinary::id('image.jpg')
	->outline(function($outline) {
		$outline->mode('inner')
			->width(5)
			->color('orange');
	});

Cloudinary::id('image.jpg')
	->outline(function($outline) {
		$outline->mode('outer')
			->width(5)
			->color('rgb:30a940');
	});

// you can also use the Color class if you prefer
Cloudinary::id('image.jpg')
  ->outline(function($outline) {
    $outline->mode('outer')
      ->width(5)
      ->color(TeamZac\Cloudinary\Color::hex('30a940'));
  });

测试

composer test

待办事项

  • 还有几个效果选项更复杂的功能尚未添加到此包中

更改日志

请参阅CHANGELOG以获取有关最近更改的更多信息。

贡献

请参阅CONTRIBUTING以获取详细信息。

安全

如果您发现任何与安全相关的问题,请通过电子邮件chad@zactax.com联系,而不是使用问题跟踪器。

鸣谢

许可

MIT许可(MIT)。有关更多信息,请参阅许可文件