Skip to content

pascal-brand38/py-responsiveimage

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

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

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages