Skip to content

Laravel bindings and facade to generate imgix URLs and support for multiple sources.

License

Notifications You must be signed in to change notification settings

Astrotomic/laravel-imgix

Repository files navigation

Laravel Imgix

Latest Version MIT License Offset Earth Larabelles

GitHub Workflow Status StyleCI Total Downloads

Laravel bindings and facade to generate imgix URLs and support for multiple sources.

Installation

You can install the package via composer:

composer require astrotomic/laravel-imgix

Configuration

First you have to publish the packages configuration file via artisan command.

php artisan vendor:publish --provider="Astrotomic\Imgix\ImgixServiceProvider" --tag="config"

After this you will have a config/imgix.php file. The default key which contains the name of your source you want to use by default. The sources key contains an array of your sources keyed by the name/identifier.

Each source must have a domain. The other keys are optional and you can even omit them.

return [
    'default' => 'default',

    'sources' => [
        'default' => [
            'domain' => 'example.imgix.net', // domain only - without http(s)
            // 'useHttps' => true, // default is true - you shouldn't change this
            // 'signKey' => null, // your signing key for this domain
            // 'includeLibraryParam' => true, // if you want to remove the `ixlib` param
        ],
        'astrotomic' => [
            'domain' => 'img.astrotomic.info',
            'useHttps' => true,
            'signKey' => 'mySecretSignKey',
            'includeLibraryParam' => false,
        ],
    ],
];

Usage

The package provides a facade and global function you can use to get the pre-configured \Imgix\UrlBuilder.

use Astrotomic\Imgix\Facades\Imgix;

Imgix::createURL('my/cool/image.jpg');
// https://example.imgix.net/my/cool/image.jpg?ixlib=php-3.3.0

Imgix::source('astrotomic')->createURL('logo.png');
// https://img.astrotomic.info/logo.png?s=200c1c2065023265285dcbc4eff99955

If you don't want to import the facade, you can use the global function which is an alias to the Imgix::source() method.

imgix()->createURL('my/cool/image.jpg');
// https://example.imgix.net/my/cool/image.jpg?ixlib=php-3.3.0

imgix('astrotomic')->createURL('logo.png');
// https://img.astrotomic.info/logo.png?s=200c1c2065023265285dcbc4eff99955

Blade component

There is a Blade component x-imgix included in this package:

<x-imgix path="my-image.png" class="img-class" alt="My fancy image" />

Optional parameters:

  • source: use one of the source defined in your imgix.php config
  • width: define the output width - will be added to the params
  • height: define the output height - will be added to the params
  • params: define the array of params passed to the Imgix API

You can publish the view by running

php artisan vendor:publish --provider="Astrotomic\Imgix\ImgixServiceProvider" --tag="views"

Testing

composer test

Changelog

Please see CHANGELOG for more information what has changed recently.

Contributing

Please see CONTRIBUTING for details. You could also be interested in CODE OF CONDUCT.

Security

If you discover any security related issues, please check SECURITY for steps to report it.

Credits

License

The MIT License (MIT). Please see License File for more information.

Treeware

You're free to use this package, but if it makes it to your production environment I would highly appreciate you buying the world a tree.

It’s now common knowledge that one of the best tools to tackle the climate crisis and keep our temperatures from rising above 1.5C is to plant trees. If you contribute to my forest you’ll be creating employment for local families and restoring wildlife habitats.

You can buy trees at offset.earth/treeware

Read more about Treeware at treeware.earth