PHP code example of timnarr / kirby-imagex
1. Go to this page and download the library: Download timnarr/kirby-imagex library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
timnarr / kirby-imagex example snippets
return [
'timnarr.imagex' => [
'cache' => true,
'customLazyloading' => false,
'formats' => ['avif', 'webp'],
'
// config.php
'thumbs' => [
'srcsets' => [
'my-srcset' => [
'400w' => ['width' => 400, 'crop' => true, 'quality' => 80],
'800w' => ['width' => 800, 'crop' => true, 'quality' => 80],
'1200w' => ['width' => 1200, 'crop' => true, 'quality' => 80],
],
// other srcset definitions
// config.php
'thumbs' => [
'srcsets' => [
'my-srcset' => [ // preset for jpeg and png
'400w' => ['width' => 400, 'crop' => true, 'quality' => 80],
'800w' => ['width' => 800, 'crop' => true, 'quality' => 80],
'1200w' => ['width' => 1200, 'crop' => true, 'quality' => 80],
],
'my-srcset-webp' => [ // preset for webp
'400w' => ['width' => 400, 'crop' => true, 'quality' => 75, 'format' => 'webp', 'sharpen' => 10],
'800w' => ['width' => 800, 'crop' => true, 'quality' => 75, 'format' => 'webp', 'sharpen' => 10],
'1200w' => ['width' => 1200, 'crop' => true, 'quality' => 75, 'format' => 'webp', 'sharpen' => 10],
],
'my-srcset-avif' => [ // preset for avif
'400w' => ['width' => 400, 'crop' => true, 'quality' => 65, 'format' => 'avif', 'sharpen' => 25],
'800w' => ['width' => 800, 'crop' => true, 'quality' => 65, 'format' => 'avif', 'sharpen' => 25],
'1200w' => ['width' => 1200, 'crop' => true, 'quality' => 65, 'format' => 'avif', 'sharpen' => 25],
],
// other srcset definitions
// Define your options and pass them to the `imagex` snippet
$options = [
'image' => $image->toFile(),
'imgAttributes' => [
'shared' => [
'class' => 'my-image',
'decoding' => 'async',
'style' => ['background: red;'],
'sizes' => '100vw',
],
],
'ratio' => '16/9',
'srcsetName' => 'my-srcset',
'critical' => false,
];
$options = [
'image' => $image->toFile(),
// ... other imagex options
];
$options = [
'image' => $image,
'pictureAttributes' => [
'shared' => [
'class' => 'my-picture-class',
'data-attr' => 'my-picture-attribute'
],
'eager' => [
// extend `shared` attributes in eager loading mode
'class' => 'my-picture-class--eager'
],
'lazy' => [
// extend `shared` attributes in lazy loading mode
'class' => 'my-picture-class--lazy js-image'
],
],
'imgAttributes' => [
'shared' => [
'class' => [
'my-image-class',
$setThisClassWhenTrue ? 'optional-class' : null
],
'alt' => $image->alt(),
'style' => ['background-color: red;', 'object-fit: cover;', 'object-position: ' . $image->focus() . ';'],
'data-attr' => 'my-img-attribute',
'sizes' => '760px',
],
'eager' => [
// extend `shared` attributes in eager loading mode
],
'lazy' => [
// extend `shared` attributes in lazy loading mode
],
// Do not add `src`, `srcset` or `loading` or their equivalents for lazy loading (like `data-src`) here.
// These attributes are handled automatically by Imagex and adding them here will throw an exception.
],
'srcsetName' => 'my-srcset',
'critical' => $isCritical ?? false,
'ratio' => '1/1',
'sourcesArtDirected' => [
['ratio' => '21/9', 'media' => '(min-width: 1200px)']
['media' => '(min-width: 820px)', 'image' => $artDirectedImage]
['ratio' => '16/9', 'media' => '(prefers-color-scheme: dark)', 'image' => $darkModeImage]
['ratio' => '21/9', 'media' => '(orientation: landscape)', 'attributes' => ['shared' => ['attribute' => 'value'], 'eager' => [], 'lazy' => []]]
],
];
// Pass your options to the Imagex snippet
snippet('imagex-picture', $options)