A thumbnail generator for Pelican that automatically scans all image tags looking for missing images and creates the thumbnails based on the filename.
Based on the existing thumbnailer plugin.
To install the library, you can use pip
$ pip install pelican-advthumbnailer
Update
pelicanconf.py
:Add
advthumbnailer
toPLUGINS
.You should add it before any image optimization plugins.
PLUGINS = [..., 'advthumbnailer']
Creating a thumbnail:
Ensure original image is copied to the output folder (add to
STATIC_PATHS
or use the autostatic plugin).E.g:
output/images/example.png
Add an
<img>
(or a<source>
tag) containing as source (or scrset):images/thumbnails/<spec>/example.png
Where
<spec>
is one of the following:<number>
: Perform a square resize of the image to<number>x<number>
pixels.<number1>x<number2>
: Perform a scale and crop resize of the image to<number1>x<number2>
pixels.<number1>x_
or_x<number2>
: Perform an aspect-preserving resize of the image enforcing the specified with or height, respectively, in pixels.
<spec>
can also be terminated with a ! in which case upscales (e.g: resize 100px to 200px) will also be allowed. By default this is not the case.Example:
<img src="images/thumbnails/100x_/example.png" />
Upon output generation, all files are scanned for image sources and those matching the
.*thumbnails/<spec>/.+
regex are thumbnailed according to the<spec>
.
ADVTHUMB_SEARCH_IMAGES_IN_ANCHORS
(default:False
): Boolean option that determines if advthumbnailer should consider thehref
attribute of<a>
elements as thumbnail paths.ADVTHUMB_QUALITY
(default:70
): Int option that determines quality of generated thumbnails.ADVTHUMB_OPTIMIZE
(default:True
): Boolean option that determines if generated thumbnails should be optimized.ADVTHUMB_PROGRESSIVE
(default:True
): Boolean option that determines if generated thumbnails should be progressive.
Integration with pelican-autostatic is achieved by adding
an option to the {static ...}
replacement.
{static images/example.png thumb="100x_"}
Integration with Jinja2 is achieved via the thumbnail
function.
<img src="{{ SITEURL + "images/example.png" | thumbnail("100x_") }}" />
For a working example check my site and my site's source code.