Saving images

In Willow there are separate save operations for each image format:

  • save_as_jpeg()
  • save_as_png()
  • save_as_gif()

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 JPEG quality setting

save_as_jpeg() takes a quality keyword argument, which is a number between 1 and 100 which defaults to 85. 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)

Image optimisation

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.