Saving images¶
In Willow there are separate save operations for each image format:
save_as_jpeg()
save_as_png()
save_as_gif()
save_as_webp()
save_as_svg()
save_as_heic()
save_as_avif()
save_as_ico()
All three take one positional argument, the file-like object to write the image data to.
For example, to save an image as a PNG file:
with open('out.png', 'wb') as f:
i.save_as_png(f)
Changing the quality setting¶
save_as_jpeg()
and save_as_webp()
takes a quality
keyword argument, which is a number between 1 and 100. It defaults to 85
for save_as_jpeg()
and 80 for save_as_webp()
.
Decreasing this number will decrease the output file size at the cost
of losing image quality.
For example, to save an image with low quality:
with open('low_quality.jpg', 'wb') as f:
i.save_as_jpeg(f, quality=40)
Progressive JPEGs¶
By default, JPEG’s are saved in the same format as their source file but you
can force Willow to always save a “progressive” JPEG file by setting the
progressive
keyword argument to True
:
with open('progressive.jpg', 'wb') as f:
i.save_as_jpeg(f, progressive=True)
Lossless AVIF, HEIC and WebP¶
You can encode the image to AVIF, HEIC (Pillow-only) and WebP without any loss by setting the
lossless
keyword argument to True
:
with open('lossless.avif', 'wb') as f:
i.save_as_avif(f, lossless=True)
with open('lossless.heic', 'wb') as f:
i.save_as_heic(f, lossless=True)
with open('lossless.webp', 'wb') as f:
i.save_as_webp(f, lossless=True)
Image optimization¶
save_as_jpeg()
and save_as_png()
both take an
optimize
keyword that when set to true, will output an optimized image.
with open('optimized.jpg', 'wb') as f:
i.save_as_jpeg(f, optimize=True)
This feature is currently only supported in the Pillow backend, if you use Wand this argument will be ignored.