{"id":42325893,"url":"https://github.com/jpsca/image-processing-egg","last_synced_at":"2026-01-27T13:09:49.840Z","repository":{"id":62591242,"uuid":"483433549","full_name":"jpsca/image-processing-egg","owner":"jpsca","description":"High-level image processing wrapper for libvips","archived":false,"fork":false,"pushed_at":"2025-10-01T15:34:25.000Z","size":712,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-11-21T21:06:17.053Z","etag":null,"topics":["image-processing","python","thumbnails","vips"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jpsca.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"MIT-LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-04-19T22:53:35.000Z","updated_at":"2025-03-24T22:58:01.000Z","dependencies_parsed_at":"2022-11-03T22:50:46.219Z","dependency_job_id":null,"html_url":"https://github.com/jpsca/image-processing-egg","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/jpsca/image-processing-egg","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpsca%2Fimage-processing-egg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpsca%2Fimage-processing-egg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpsca%2Fimage-processing-egg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpsca%2Fimage-processing-egg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jpsca","download_url":"https://codeload.github.com/jpsca/image-processing-egg/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpsca%2Fimage-processing-egg/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28813276,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-27T12:25:15.069Z","status":"ssl_error","status_checked_at":"2026-01-27T12:25:05.297Z","response_time":168,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["image-processing","python","thumbnails","vips"],"created_at":"2026-01-27T13:09:49.207Z","updated_at":"2026-01-27T13:09:49.832Z","avatar_url":"https://github.com/jpsca.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ImageProcessing 🥚\n\n[![Tests status](https://github.com/jpsca/image-processing-egg/actions/workflows/tests.yml/badge.svg)](https://github.com/jpsca/image-processing-egg/actions/workflows/tests.yml)\n\nProvides higher-level image processing helpers that are commonly needed when handling image uploads.\n\nThis package process images with the [libvips] library.\nLibvips is a library that can process images [very rapidly][libvips performance] (often multiple times faster than ImageMagick).\n\n\n## Requirements\n\nYou need to install first the `libvips` library.\n\n- In a MacOS terminal ([using Homebrew](https://brew.sh/)) run: `brew install vips`\n- In a Debian/Ubuntu terminal run: `sudo apt install libvips-tools`\n\n## Installation\n\nInstall this library with pip, or add it to your requirements/dependencies:\n\n```sh\npip install image-processing-egg\n```\n\n\n## Usage\n\nProcessing is performed through the **`ImageProcessing`** class that\nuses a chainable API for defining the processing pipeline:\n\n```python\nfrom image_processing import ImageProcessing\n\nprocessed = (\n  ImageProcessing(source_path)\n  .resize_to_limit(400, 400)\n  .convert(\"png\")\n  .save()\n)\n\nprocessed #=\u003e /temp/.../20180316-18446-1j247h6.png\u003e\n```\n\nThis allows easy branching when generating multiple derivates:\n\n```python\nfrom image_processing import ImageProcessing\n\npipeline = ImageProcessing(source_path).convert(\"png\")\n\nlarge  = pipeline.resize_to_limit(800, 800).save()\nmedium = pipeline.resize_to_limit(500, 500).save()\nsmall  = pipeline.resize_to_limit(300, 300).save()\n```\n\nThe processing is executed with `save()`.\n\n```python\nprocessed = ImageProcessing(source_path) \\\n  .convert(\"png\") \\\n  .resize_to_limit(400, 400) \\\n  .save()\n\n```\n\nYou can inspect the pipeline options at any point before executing it:\n\n```python\npipeline = ImageProcessing(source_path) \\\n  .loader(page=1) \\\n  .convert(\"png\") \\\n  .resize_to_limit(400, 400) \\\n  .strip()\n\npipeline.options\n# =\u003e {\n#  'source': '/path/to/source.jpg',\n#  'loader': {'page': 1},\n#  'saver': {},\n#  'format': 'png',\n#  'operations': [\n#    ['resize_to_limit', [400, 400], {}],\n#    ['strip', [], {}],\n#   ]\n# }\n```\n\nThe source object needs to be a string or a `Path`.\nNote that the processed file is always saved to a new location,\nin-place processing is not supported.\n\n```python\nImageProcessing(\"source.jpg\")\nImageProcessing(Path(\"source.jpg\"))\n```\n\nYou can define the source at any time using `source()`\n\n```python\nImageProcessing().source(\"source.jpg\")\nImageProcessing().source(Path(\"source.jpg\"))\n```\n\nWhen `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()`.\n\n```python\npipeline = ImageProcessing(source_path)\n\npipeline.save()  #=\u003e tempfile\npipeline.save(\"/path/to/destination\")\n```\n\n\n## Credits\n\nThis library is a port to Python of the Ruby [image_processing gem][gem].\n\n\n## License\n\n[MIT](MIT-LICENSE)\n\n[libvips]: http://libvips.github.io/libvips/\n[libvips performance]: https://github.com/libvips/libvips/wiki/Speed-and-memory-use\n[gem]: https://github.com/janko/image_processing\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjpsca%2Fimage-processing-egg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjpsca%2Fimage-processing-egg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjpsca%2Fimage-processing-egg/lists"}