8000 GitHub - codewithkyle/craft-jitter at v2.2.0
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

codewithkyle/craft-jitter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

75 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Just In Time Image Transformations

Jitter is a just in time image transformation plugin for Craft CMS. The API is based on Imgix. This plugin was created to be a simple and free alternative to an Imgix style service. It does not and will not have all the bells and whistles that other paid services/plugins offer. If you need something a bit more advanced besides basic image transformations I suggest you pay for Imgix or select a different Craft Plugin.

Requirements

This plugin requires ImageMagick and the following versions of PHP and Craft CMS:

  • Craft CMS 4.0.0+ with PHP 8+
  • Craft CMS 3.0.0+ with PHP 7.2+ or 8+

Installation

To install the plugin, follow these instructions.

  1. Open your terminal and go to your Craft project:

     cd /path/to/project
    
  2. Then tell Composer to load the plugin:

     composer require codewithkyle/jitter
    
  3. In the Control Panel, go to Settings → Plugins and click the “Install” button for Jitter.

Configuring Jitter

Jitter can be configured to use S3-compatible object storage solutions by adding a jitter.php file to your projects config/ directory.

<?php

return [
    "accessKey" => getenv("PUBLIC_KEY"),
    "secretAccessKey" => getenv("PRIVATE_KEY"),
    "region" => "region-name",
    "bucket" => "bucket-name",
    "folder" => "transformed-images",
    "endpoint" => getenv("ENDPOINT_URL")
];

Note: the endpoint config value is optional. You will only need to use it when using an S3-compatible alternative S3 cloud object storage solution (like Digital Ocean Spaces).

Using Jitter

Requesting an image transformation through the API:

/jitter/v1/transform?id=1&w=768&ar=16:9

Requesting an image transformation via Twig:

{# This will transform the image when the template renders. #}
{# This can cause site-wide performance issues depending on how many times this method is used (per template) and how much RAM is available. #}
{% set transformedImageUrl = craft.jitter.transformImage(entry.image[0], { w: 150, ar: "1:1", m: "fit", fm: "gif", q: 10 }) %}

{# For a faster template render build the API URL instead #}
{% set transformedImageUrl = craft.jitter.url(entry.image[0], { w: 150, ar: "1:1", m: "fit", fm: "gif", q: 10 }) %}

<img 
    src="{{ transformedImageUrl }}" 
    srcset="{{ craft.jitter.srcset(entry.image[0], [
        { w: 300, h: 250, },
        { w: 768, ar: "16:9", },
        { w: 1024, ar: "16:9", },
    ]) }}" 
    loading="lazy"
    width="1024"
/>

Generating transformations via PHP:

$jitter = new \codewithkyle\jitter\services\Transform();
$src = $jitter->generateURL([
    "id" => $image->id,
    "w" => 300,
    "ar" => "1:1",
]);
$srcset = $jitter->generateSourceSet($image, [
    [
        "w" => 300,
        "h" => 250,
    ],
    [
        "w" => 768,
        "ar" => "16:9",
    ],
    [
        "w" => 1024,
        "ar" => "16:9",
    ],
]);

Transformation parameters:

5D2B
Parameter Default Description Valid options
id null the image asset id int
path null the image file path string
w base image width desired image width int
h base image height desired image height int
ar base image aspect ratio desired aspect ratio int:int
fm auto desired image format jpg, png, gif, auto
m clip how the image should be resized crop, clip, fit, letterbox, croponly
q 80 desired image quality 0 to 100
bg ffffff letterbox background color hex
fp-x 0.5 or asset focal point horizontal focus point 0 to 1
fp-y 0.5 or asset focal point vertical focus point 0 to 1

The auto format type will return a webp image when the server can generate the format and the client's browser supports the format.

0