{"id":20016914,"url":"https://github.com/inspirum/image-resizer-go","last_synced_at":"2025-08-04T07:10:43.931Z","repository":{"id":64302342,"uuid":"262623580","full_name":"inspirum/image-resizer-go","owner":"inspirum","description":"On-demand image resizing, format converting and size optimization with the best CLI tools written in GO. ","archived":false,"fork":false,"pushed_at":"2024-09-05T11:32:55.000Z","size":56,"stargazers_count":6,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-06T04:04:05.323Z","etag":null,"topics":["go","image-resizer"],"latest_commit_sha":null,"homepage":"","language":"Go","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/inspirum.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"docs/CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"docs/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-05-09T17:30:57.000Z","updated_at":"2024-11-05T11:25:50.000Z","dependencies_parsed_at":"2024-06-20T03:02:40.293Z","dependency_job_id":"77d5709f-0307-4ef8-8dab-435a4f4392d4","html_url":"https://github.com/inspirum/image-resizer-go","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/inspirum/image-resizer-go","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inspirum%2Fimage-resizer-go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inspirum%2Fimage-resizer-go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inspirum%2Fimage-resizer-go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inspirum%2Fimage-resizer-go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/inspirum","download_url":"https://codeload.github.com/inspirum/image-resizer-go/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inspirum%2Fimage-resizer-go/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268660150,"owners_count":24286028,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-04T02:00:09.867Z","response_time":79,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["go","image-resizer"],"created_at":"2024-11-13T08:13:42.099Z","updated_at":"2025-08-04T07:10:43.899Z","avatar_url":"https://github.com/inspirum.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Image resizer\n\n**Created as part of [inspishop][link-inspishop] e-commerce platform by [inspirum][link-inspirum] team.**\n\n[![Build Status][ico-travis]][link-travis]\n[![Software License][ico-license]][link-licence]\n[![Docker Version][ico-docker-hub-version]][link-docker-hub]\n[![Docker Pulls][ico-docker-hub-downloads]][link-docker-hub]\n[![Docker Image Size][ico-docker-hub-size]][link-docker-hub]\n\nOn-demand image resizing, format converting and size optimization with the best CLI tools. \nPrepared to be used as Docker image with cloud storage as Amazon S3.\n\n- image [resizing](#resizing), [format converting](#format-encoding) and [optimization](#optimization)\n- support for **jpeg**, **png**, **webp**, **bmp**, **gif**, **tiff**, **svg** image formats\n- file-cache for resized images on local disk *(temporary cache)* and cloud storage *(persistent cache)*\n\n\n## Usage example\n\n\n### Resizing\n\nApplication handle route with dynamic [**template**](#template) (parameters divided by dash) and **filepath** parameters.\n```\nGET /image/{template}/{filepath}\n```\n\n\n#### Template\n\nOptions for resizing are specified as a dash delimited list of parameters, which can be supplied in any order. \nDuplicate parameters overwrite last values.\n\n| Name | Template | Example | Description  |\n| :--- | :--- | :--- | :--- |\n| width | `w[X]` | `w200` | Resize to 200px width with proportional height |\n| height| `h[X]` | `h100` | Resize to 100px height with proportional width |\n| ratio | `[X]x[X]` | `1x2` |  Resize to ratio to 1:2 *(width : height)* |\n| crop | `crop` | `crop` | Image fill whole canvas (no addition background added) |\n| upscale | `upscale` | `upscale` | Image can be larger than original |\n\nThere are special template string `original`. This will return optimized image with original dimensions.\nIt is helpful to show image with maximal resolution without knowing its dimension.\n\nWhen there are set both `height` and `width` then `ratio` parameter will be ignored.\n\nIf output image has a different ratio than an original, image will be centered on transparent canvas (**jpg** has white background because it doesn't support transparent color).\n\n\n#### Examples\n\n\u003e Values are for an image with dimension 200x400px (width : height).\n\n| Template string | Output dimension |\n| :--- | :--- | \n| `original` | 200x400 |\n| `h100` | 50x100 |\n| `w100` |  100x200 |\n| `w50-w200` |  100x200 |\n| `w100-h300` | 100x300 |\n| `w200-1x1` | 200x200 |\n| `w200-1x3` | 200x600 |\n| `w100-h300-2x1` | 100x300 |\n| `w1000-1x1` | 1000x1000 |\n| `w1000-1x1-crop` | 200x200 |\n| `w1000-1x1-crop-upscale` | 1000x1000 |\n\n\n#### Width \u0026 height\n\n\u003e Examples use **jpg** format because canvas background is white (for better visibility)\n\n| `h200` | `w200` | `w188-h233` |\n| :---: | :---: | :---: |\n| *(300x200)* | *(200x134)*  | *(188x233)* |\n| ![h200](https://github.com/inspirum/assets/raw/master/image-resizer-go/img/sizes/h200.jpg) | ![w200](https://github.com/inspirum/assets/raw/master/image-resizer-go/img/sizes/w200.jpg) | ![w188-h233](https://github.com/inspirum/assets/raw/master/image-resizer-go/img/sizes/w188-h233.jpg) |\n\n\n#### Ratio\n\n\n| `h200-1x1` | `h200-1x2` | `h200-2x1` |\n| :---: | :---: | :---: |\n| *(200x200)* | *(100x200)*  | *(400x200)* |\n| ![h200-1x1](https://github.com/inspirum/assets/raw/master/image-resizer-go/img/ratio/h200-1x1.jpg) | ![h200-1x2](https://github.com/inspirum/assets/raw/master/image-resizer-go/img/ratio/h200-1x2.jpg) | ![h200-121](https://github.com/inspirum/assets/raw/master/image-resizer-go/img/ratio/h200-2x1.jpg) |\n\n\n#### Crop\n\n\u003e `crop` parameter will crop image to fill whole canvas \n\n| `h200-1x1-crop` | `h200-1x2-crop` | `h200-2x1-crop` |\n| :---: | :---: | :---: |\n| *(200x200)* | *(100x200)*  | *(400x200)* |\n| ![h200-1x1-crop](https://github.com/inspirum/assets/raw/master/image-resizer-go/img/ratio/h200-1x1-crop.jpg) | ![h200-1x2-crop](https://github.com/inspirum/assets/raw/master/image-resizer-go/img/ratio/h200-1x2-crop.jpg) | ![h200-121-crop](https://github.com/inspirum/assets/raw/master/image-resizer-go/img/ratio/h200-2x1-crop.jpg) |\n\n\n#### Upscale\n\n\u003e By default, image can't up-size (be larger than original) \n\n| `original` | `w250-h300` | `w250-h300-upscale` | `w250-h300-crop` | `w250-h300-crop-upscale` |\n| :---: | :---: | :---: | :---: | :---: |\n| *(200x200)* | *(250x300)*  | *(250x300)* | *(167x200)* | *(250x300)*  |\n| ![original](https://github.com/inspirum/assets/raw/master/image-resizer-go/img/upsize/original.jpg) | ![w250-h300](https://github.com/inspirum/assets/raw/master/image-resizer-go/img/upsize/w250-h300.jpg) | ![w250-h300-upscale](https://github.com/inspirum/assets/raw/master/image-resizer-go/img/upsize/w250-h300-upscale.jpg) | ![w250-h300-crop](https://github.com/inspirum/assets/raw/master/image-resizer-go/img/upsize/w250-h300-crop.jpg) | ![w250-h300-crop-upscale](https://github.com/inspirum/assets/raw/master/image-resizer-go/img/upsize/w250-h300-crop-upscale.jpg) |\n\n| `original` | `w500-h300-crop` |`w500-h300-crop` | `w500-h300-crop-upscale` | \n| :---: | :---: | :---: | :---: |\n| *(200x200)* |  *(500x300)* | *(200x120)* | *(500x300)* |\n| ![original](https://github.com/inspirum/assets/raw/master/image-resizer-go/img/upsize/original.jpg) | ![w500-h300](https://github.com/inspirum/assets/raw/master/image-resizer-go/img/upsize/w500-h300.jpg) | ![w500-h300-crop](https://github.com/inspirum/assets/raw/master/image-resizer-go/img/upsize/w500-h300-crop.jpg) | ![w5w500-h300-crop-upscale](https://github.com/inspirum/assets/raw/master/image-resizer-go/img/upsize/w500-h300-crop-upscale.jpg) |\n\n\n### Format encoding\n\nImage can be encoded to any supported format simple by changing file extension in URL.\n\nOriginal image extension is specified in `original` query parameter.\n\n\u003e This is typically used to encode image as web-friendly **webp** format\n```\nhttp://localhost:3000/image/custom-w400-1x1-upscale/data/products/0/1/background.webp?original=png\n```\n\n\n### Optimization\n\nThe package will use these optimizers if they are present on your system:\n\n- [pngquant 2](https://pngquant.org)\n- [jpegoptim](http://freecode.com/projects/jpegoptim)\n- [gifsicle](http://www.lcdf.org/gifsicle)\n- [svgcleaner](https://github.com/RazrFalcon/svgcleaner)\n- [cwebp](https://developers.google.com/speed/webp/docs/cwebp)\n\nBy setting environment variable you can change default path to binary file or default arguments. \n\n| Environment variable | Default value |\n| :--- | :--- | \n| `CMD_OPTIMIZER_PNG` | `pngquant --force --ext .png --skip-if-larger --quality 0-75 --speed 4 --strip --` |\n| `CMD_OPTIMIZER_JPG` | `jpegoptim --force --strip-all --max 75 --quiet --all-progressive` |\n| `CMD_OPTIMIZER_GIF` | `gifsicle --batch --optimize=3` |\n| `CMD_OPTIMIZER_SVG` | `svgcleaner` |\n| `CMD_OPTIMIZER_WEBP` | `cwebp -m 6 -pass 10 -mt -q 75 -quiet` |\n\n\n#### Examples\n\n| 64 kB | 28 kB *(43 %)* | 22 kB *(34 %)* |\n| :---: | :---: | :---: |\n| ![original](https://github.com/inspirum/assets/raw/master/image-resizer-go/img/optimize/jpg_original.jpg) | ![optimized](https://github.com/inspirum/assets/raw/master/image-resizer-go/img/optimize/jpg_optimized.jpg) | ![optimized](https://github.com/inspirum/assets/raw/master/image-resizer-go/img/optimize/jpg_optimized.webp) |\n\n| 421 kB | 91 kB *(21 %)* | 23 kB *(5 %)* |\n| :---: | :---: | :---: |\n| ![original](https://github.com/inspirum/assets/raw/master/image-resizer-go/img/optimize/png_original.png) | ![optimized](https://github.com/inspirum/assets/raw/master/image-resizer-go/img/optimize/png_optimized.png) | ![optimized](https://github.com/inspirum/assets/raw/master/image-resizer-go/img/optimize/png_optimized.webp) |\n\n\n## System requirements\n\n\n## Installation\n\n\n## Testing\n\n\n## Contributing\n\nPlease see [CONTRIBUTING][link-contributing] and [CODE_OF_CONDUCT][link-code-of-conduct] for details.\n\n\n## Security\n\nIf you discover any security related issues, please email tomas.novotny@inspirum.cz instead of using the issue tracker.\n\n\n## Credits\n\n- [Tomáš Novotný](https://github.com/tomas-novotny)\n- [All Contributors][link-contributors]\n\n\n## License\n\nThe MIT License (MIT). Please see [License File][link-licence] for more information.\n\n\n[ico-license]:              https://img.shields.io/github/license/inspirum/image-resizer-go.svg?style=flat-square\u0026colorB=blue\n[ico-travis]:               https://img.shields.io/travis/inspirum/image-resizer-go/master.svg?branch=master\u0026style=flat-square\n[ico-docker-hub-version]:   https://img.shields.io/docker/v/inspirum/image-resizer?sort=semver\u0026style=flat-square\u0026label=docker%20tag\n[ico-docker-hub-size]:      https://img.shields.io/docker/image-size/inspirum/image-resizer?style=flat-square\u0026label=docker%20image%20size\n[ico-docker-hub-downloads]: https://img.shields.io/docker/pulls/inspirum/image-resizer?style=flat-square\n\n\n[link-author]:              https://github.com/inspirum\n[link-contributors]:        https://github.com/inspirum/image-resizer-go/contributors\n[link-licence]:             ./LICENSE.md\n[link-changelog]:           ./CHANGELOG.md\n[link-contributing]:        ./docs/CONTRIBUTING.md\n[link-code-of-conduct]:     /docs/CODE_OF_CONDUCT.md\n[link-travis]:              https://travis-ci.org/inspirum/image-resizer-go\n[link-docker-hub]:          https://hub.docker.com/repository/docker/inspirum/image-resizer/tags?page=1\n[link-inspishop]:           https://www.inspishop.cz/\n[link-inspirum]:            https://www.inspirum.cz/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finspirum%2Fimage-resizer-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finspirum%2Fimage-resizer-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finspirum%2Fimage-resizer-go/lists"}