Skip to main content

ImageProcessing 🥚

Tests status

Provides higher-level image processing helpers that are commonly needed when handling image uploads.

This package process images with the libvips library. Libvips is a library that can process images very rapidly (often multiple times faster than ImageMagick).

Requirements

You need to install first the libvips library.

  • In a MacOS terminal (using Homebrew) run: brew install vips
  • In a Debian/Ubuntu terminal run: sudo apt install libvips-tools

Installation

Install this library with pip, or add it to your requirements/dependencies:

pip install image-processing-egg

Usage

Processing is performed through the ImageProcessing class that uses a chainable API for defining the processing pipeline:

from image_processing import ImageProcessing

processed = (
  ImageProcessing(source_path)
  .resize_to_limit(400, 400)
  .convert("png")
  .save()
)

processed #=> /temp/.../20180316-18446-1j247h6.png>

This allows easy branching when generating multiple derivates:

from image_processing import ImageProcessing

pipeline = ImageProcessing(source_path).convert("png")

large  = pipeline.resize_to_limit(800, 800).save()
medium = pipeline.resize_to_limit(500, 500).save()
small  = pipeline.resize_to_limit(300, 300).save()

The processing is executed with save().

processed = ImageProcessing(source_path) \
  .convert("png") \
  .resize_to_limit(400, 400) \
  .save()

You can inspect the pipeline options at any point before executing it:

pipeline = ImageProcessing(source_path) \
  .loader(page=1) \
  .convert("png") \
  .resize_to_limit(400, 400) \
  .strip()

pipeline.options
# => {
#  'source': '/path/to/source.jpg',
#  'loader': {'page': 1},
#  'saver': {},
#  'format': 'png',
#  'operations': [
#    ['resize_to_limit', [400, 400], {}],
#    ['strip', [], {}],
#   ]
# }

The source object needs to be a string or a Path. Note that the processed file is always saved to a new location, in-place processing is not supported.

ImageProcessing("source.jpg")
ImageProcessing(Path("source.jpg"))

You can define the source at any time using source()

ImageProcessing().source("source.jpg")
ImageProcessing().source(Path("source.jpg"))

When save() is called without options, the result of processing is a temp file. You can save the processing result to a specific location by passing a destination, as a string or a Path, to save().

pipeline = ImageProcessing(source_path)

pipeline.save()  #=> tempfile
pipeline.save("/path/to/destination")

Credits

This library is a port to Python of the Ruby image_processing gem.

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

image_processing_egg-0.3.1.tar.gz (13.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

image_processing_egg-0.3.1-py3-none-any.whl (9.2 kB view details)

Uploaded Python 3

File details

Details for the file image_processing_egg-0.3.1.tar.gz.

File metadata

  • Download URL: image_processing_egg-0.3.1.tar.gz
  • Upload date:
  • Size: 13.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.21

File hashes

Hashes for image_processing_egg-0.3.1.tar.gz
Algorithm Hash digest
SHA256 559b20969fb046f640d138c172c204cc7df8b9ffc3bbc776c9ca43e3fc328993
MD5 4c9a37bd09e270ad9102df566bcba7d2
BLAKE2b-256 fa5b63c07c3246a4f15de5368f9152fb62eac62583ad858130182e29169569d4

See more details on using hashes here.

File details

Details for the file image_processing_egg-0.3.1-py3-none-any.whl.

File metadata

File hashes

Hashes for image_processing_egg-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d4c50909cf67f9e24c83d92a8fce7776ebbc3803fbe2914d98127b398a23a289
MD5 0e61bcbe61580499421fbc1622ac60a4
BLAKE2b-256 d164448086a989b17442629a1d919827f8a23e860216fd0841a4362565ce5ab4

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.3.1 This release

2 files

0.3

2 files

0.2

2 files

0.1

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page