I’ve made a little site using files as pages, basically as described here
How to create virtual pages for each photo in an album?
Trouble is, it seems to mess with a few things. For instance,
->grayscale() does not work with the images.
<?= $kirby->collection("home")->images()->first()->resize(1920, 1200)->greyscale()->url() ?>
Any idea whats going on? The resize works, but not the gray scale conversion.
You cannot chain multiple thumb methods. To apply multiple options, use the
thumb method with an array of options:
$image->thumb(['width' => 250, 'grayscale' => true])
The option for black&white images is called
You can’t chain these methods, use
echo $image->thumb(['width' => 1920, 'grayscale' => true]);
Ah I see… but the
docs suggest you can chain it on an image.
I can’t see any examples where chaining with resize/crop etc is used? Of course you can call
$image->greyscale() on an image, but not on a fileversion object.
Oh i see, thats the problem, you can’t do it in combination with the others.
For anyone else reading this in the future, theres a typo in the example above…
->thumb(['width' => 1920, 'grayscale' => true])
Nope, you can use
Edit: Turns out, no, you can’t…
Intresting… it didnt work for me until i switced it to
grayscale. Im using Image Magick as the driver.
Infact neither ‘greyscale’ or ‘bw’ seem to work with ImageMagick, only ‘grayscale’ does. It does append bw on to the end of the filename though, but it remains full color.
hmm, strange, im using GD as the driver and I also can only use “grayscale” … both greyscale and bw don’t seem to work. Using those leave the image thumbs coloured.
here my config for GD
'thumbs' => [
'driver' => 'gd',
'quality' => '80',
'presets' => [
'small' => ['width' => 150],
'average' => ['width' => 550],
'medium' => ['width' => 800],
'large' => ['width' => 1200]
and the image line im using
<?php echo $image->thumb(['width' => 300, 'bw' => true]); ?> #does not work
<?php echo $image->thumb(['width' => 300, 'greyscale' => true]); ?> #does not work
<?php echo $image->thumb(['width' => 300, 'grayscale' => true]); ?> #works :)
using PHP 7.3.7 here and Kirby 3.3.2.
I had a poke around in source code and couldnt see any evidence that you can use any of those three, only
grayscale seemed to be in there.
while checking for something else, I did come across bw() in the source code though, see
https://github.com/getkirby/kirby/blob/3.3.2/src/Cms/FileModifications.php#L34, so not sure why its not working?
* Converts the image to black and white
* @return \Kirby\Cms\FileVersion|\Kirby\Cms\File
public function bw()
return $this->thumb(['grayscale' => true]);
Thats a file method, that uses
thumb() itself. You cant use that inside thumb(), only directly on an image object.
Your’e right James. It would however make sense that thumb() also has access to it, as it has access to other functions like blur(). Why restrict bw() or greyscale() to the file method only?
It is to do with the way some operations on images happen. Once the file becomes a file version, you can’t do further mods to since its now in the media folder. blur, greyscale and bw are all one trick methods, and they call
thumb() them selves on the image. In otherwords you cant chain thumb() twice on an image, which is basically what is happening when you do
thumb() allows you to bundle up a few things (width, height, quality, greyscale etc) in one pass to get around this.
It would still be useful if the grayscale option was normalized as well, which would be quite handy.
In any case, I don’t know why it worked with
greyscale in my test the other day, today it only works with
grayscale as well.
I found that if you run one, then switch it and thumb is already in the media folder, it doesnt do it. I had to delete my media folder each time to see the difference between the 3 wordings. Maybe you already had a thumb that stopped it working further, and made it look like it had worked. I think if the source image had changed (like you had replaced the image with a different version of it), it would created a fresh thumb. It uses hashing doesnt it, so it doesnt update the thumb unless the hash has changed.
Yes, I guess it was something like that.
In any case, I created an issue on GitHub, because I think these alternatives should be supported:
11:57AM - 05 Jan 20 UTC
Currently, calling the thumb option with greyscale or bw fails.
echo $page->image()->thumb(['width' => 250, 'grayscale' => true]);
echo $page->image()->thumb(['width' => 250, 'greyscale'...