Skip to main content

Create different scaled versions of an image, in webp, jpg, png, svg,... to be used on responsive website

Project description

Pytest

Pypi version Pypi Download

Introduction

responsiveimage is a python package aimed at building responsive version of images.

Supported formats are:

  • image: webp, jpg, png, gif and svg
  • video: mp4, mts, avi, wmv, mov


Usage

Installation

Run python -m pip install responsiveimage to install the python package.

Also, please install the binaries ffmpeg and optipng (using apt-get, pacman, or directly from sourceforge) to further optimize the png version of the sprite.

Usage

  • resize and save all images in <srcdir> into <dstdir>. New size is 1920px by default (at largest dimension, keep the aspect-ratio), and save quality is:
    • gif and svg: direct copy
    • png: use Pillow library, with Optimize=True
    • jpg: quality=80, progressive, 4:2:2
    • webp: quality=80
    • mp4: use ffmpeg to scale at 1024
python -m responsiveimage --src-dir <srcdir> --dst-dir <dstdir>
  • --export-to-webp: also export the webp version of the image

  • --size <s1,s2...>: different scaling are generating, instead of the default 1920px. The max size will be s1, s2...

  • --height <s1,s2...>: different scaling are generating, based on the height which will be be s1, s2... Note that --size and --height cannot be used at the same time.

  • By default, the name of the created responsive versions of the image are

    • unchanged if there is a single scaled version of the image
    • or suffixed with -s1, -s2... otherwise.

    Option --add-name <name1,name2...>is used to modify the suffix, in name1 , name2. Note that the numbers of sizes or heights must be the same as the one of add-name if provided

    As an example, using --size 1024,512 --add-name _big,_small, an image img.jpg will be rescaled with 1024px and named img_big.jpg, and another one rescaled at 512px and named img_small.jpg

  • --mp4-as-gif: from a mp4 file, the gif and the webp animated versions are created, using ffmpeg

  • --crop <x1,y1,x2,y2> crops the original image using (x1,y1) as the top-left point (x being the horizontal position in px), and (x2,y2) being the bottom-right point.

  • --recursive to scan recursively the source directory. The directory tree is kept in destination

  • --format <f1,f2> to used to only process files of provided format. You can for example process only jpg and png to exclude videos. The default value is jpg,png,webp,gif,svg,mp4,mts,avi,wmv,mov

  • --copy copy the files instead of transforming them. Of course, the creation date is updated accordingly, for example using the json data

  • --force: recreate the scaled versions of the images, even when they exist.



Releases

1.6.0

  • --copy option behavior update: copy the files instead of transforming them. Of course, the creation date is updated accordingly, for example using the json dat

1.5.0

  • json from google photo with any suffix
  • fall-back when exif is wrong
  • --copy option

1.4.0

  • animated gif and webp uses --size option

1.3.0

  • Multiprocessing on images

1.2.0

  • Supported formats: webp, jpg, png, gif and svg, mp4, mts, avi, wmv, mov
  • New options:
    • --format
    • --recursive

1.1.1

  • Fix mp4: no upscale, along max size.
  • Fix HEIC format

1.1.0

Following capabilities are added:

  • --height
  • --add-name
  • --crop
  • --force

1.0.0

Initial version

Development steps

  • python -m build
  • python -m pip install .
  • check the following before pushing (sse .github/workflows/pyton-app.yml)
    • flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
    • flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
    • pylint --indent-string=' ' --disable C0103,C0200,C0301,C0325,R0912,R0913,R0914,R0915,R0917,R1705,W0511,W0621,W0613,W0702,W0718 $(git ls-files '*.py')
    • pytest tests/png.py tests/export_to_webp.py tests/mp4.py tests/crop.py

Project details


Download files

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

Source Distribution

responsiveimage-1.6.0.tar.gz (12.9 kB view details)

Uploaded Source

Built Distribution

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

responsiveimage-1.6.0-py3-none-any.whl (14.8 kB view details)

Uploaded Python 3

File details

Details for the file responsiveimage-1.6.0.tar.gz.

File metadata

  • Download URL: responsiveimage-1.6.0.tar.gz
  • Upload date:
  • Size: 12.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for responsiveimage-1.6.0.tar.gz
Algorithm Hash digest
SHA256 c7f404953e66255ee336a657340fa270247c811324503f48e942b55a0b0fba45
MD5 a7fadf28ff014804fc2e2233333a0d63
BLAKE2b-256 ae0986b9e6c0136a7f0a0e3a899c8c8dde89b08827d2ffb0222554235c52abad

See more details on using hashes here.

File details

Details for the file responsiveimage-1.6.0-py3-none-any.whl.

File metadata

File hashes

Hashes for responsiveimage-1.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 44dbe42a3ce5d4745b62647bd554e6a1a54584e01fa212615bf6b969e9e4894a
MD5 f02138d060b7f5960b1e02736dc525a4
BLAKE2b-256 47d3fd93818a3a122c80b75d5e364c3257e6f0713bf9aefa472504d29390e121

See more details on using hashes here.

Supported by

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