mullema / k3-image-clip
Visual image clip for Kirby 3
Installs: 3 512
Dependents: 0
Suggesters: 0
Security: 0
Stars: 38
Watchers: 2
Forks: 5
Open Issues: 8
Language:Vue
Type:kirby-plugin
pkg:composer/mullema/k3-image-clip
Requires
Conflicts
- getkirby/cms: <3.6
 
README
Visual image clipping / cropping.
Overview
- Installation
 - Requirements
 - Consider a donation
 - Panel Usage
 - Replace Files Field
 - Frontend Usage
 - License
 
Installation
Download
Download and copy this repository to /site/plugins/k3-image-clip
Git submodule
git submodule add https://github.com/mullema/k3-image-clip.git site/plugins/k3-image-clip
Composer
composer require mullema/k3-image-clip
Requirements
- Kirby 3.6 -> use v3
 - Kirby 3.5 -> use v2.2.0
 - Kirby 3.3 -> use v2.1.0
 - Kirby 3.2.5 -> use v2.0.0
 - GD Library or ImageMagick
 
Consider a donation
This plugin is free but if you use it in a commercial project please consider to make a donation.
Panel Usage
This plugin comes with a image-clip field. It is based on the files field and supports all it's options. Read more about the files field in the Kirby3 Docs.
Example blueprint:
myimages: type: image-clip query: site.find('photography/animals').images layout: cards size: small clip: minwidth: 400 minheight: 300 maxwidth: 800 maxheight: 600 ratio: fixed
- All values are in Pixels.
 minwidth,minheight,maxwidth,maxheightlimit the clip/crop select area.- None of the clip options are required, but in most cases it is recommended to define 
minwidthandminheight. - Often it makes more sense to resize the resulting image than defining 
maxwidthandmaxheight. ratio: fixedlocks the ratio- if 
minwidthandminheightare defined, - or 
maxwidthandmaxheightare defined, - or all of the above.
 
- if 
 
The field does basic checks of image size and type but counts mainly on you defining e.g, accepted mime types or image sizes in a File Blueprint. You can filter the images list by template like that:
query: site.find('photography').children.images.filterBy('template', 'cover')
Replace Files Field
The image-clip field is able to replace a files field by changing the field type. Simply replace
type: files
with
type: image-clip
This works also vice versa to use the native files field instead of the image-clip field.
Frontend Usage
How to fetch the images defined in a image-clip field.
Read about the clip() method a bit further down.
Single Image
if ($image = $page->myimages()->toImage()) { echo $image->clip(500); }
- Important: 
toFiledoes not work, usetoImage()instead. toImage()returns a File Object with all it's functions.
Multiple Images
foreach($page->myimages()->toImages() as $image) { echo $image->clip(500); }
- Important: 
toFilesdoes not work, usetoImages()instead. toImages()returns a Files Collection with all it's functions.
File Methods
$file->clip()
Clip and resize. Generates a Thumbnail of the clip area.
Adapter for $file->thumb(). Returns a FileVersion|File Object.
if ($image = $page->myimages()->toImage()) { echo $image->clip(500); }
$file->clip(200, 300); // bestfit $file->clip(200); // width 200px $file->clip(null, 300); // height 300px $file->clip(); // clip area without resizing
- Used in combination with the 
image-clipField, invokes automatically field clip data. - Arguments: 
clip(width, height)- if 
widthandheightare both defined, the image will be resized withbestfit 
 - if 
 
$file->srcset()
Use this method to generate the srcset attribute for responsive images. Read more about it's functionality in the Kirby3 Docs
<?php if ($image = $page->myimages()->toImage()): ?> <img srcset="<?= $image->srcset([300, 800, 1024]) ?>"> <?php endif; ?>
$file->thumb()
The thumb method accepts now the option clip and can be used with any resizable image.
$file->thumb([ 'width' => 400, 'clip' => [ 'width' => 500, 'height' => 200, 'top' => 10, 'left' => 200 ] ]);
- Clips/crops a square of 500x200px, 10px from top and 200px from the left end of the original image.
 - Resizes the resulting image to 400px width.
 - If 
clipandcropare used at the same time,cropwill be ignored. 
Read more about the thumb method in the Kirby3 Docs
$file->getClip()
Returns the clip data.
Can be useful e.g with the $file->thumb() method.
if ($image = $page->myimages()->toImage()) { echo $image->thumb([ 'width' => 1200, 'grayscale' => true, 'clip' => $image->getClip() ]); }
License
MIT