{"id":19702716,"url":"https://github.com/ultimate-guitar/reimage","last_synced_at":"2026-03-03T08:12:00.795Z","repository":{"id":82032121,"uuid":"124403694","full_name":"ultimate-guitar/reImage","owner":"ultimate-guitar","description":"Fast image resizing backend based on libvips, mozjpeg and pngquant","archived":false,"fork":false,"pushed_at":"2021-02-25T22:56:16.000Z","size":10162,"stargazers_count":120,"open_issues_count":0,"forks_count":11,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-05T17:43:51.890Z","etag":null,"topics":["golang","image-resizer","image-resizing"],"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/ultimate-guitar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"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}},"created_at":"2018-03-08T14:33:25.000Z","updated_at":"2025-03-18T06:22:52.000Z","dependencies_parsed_at":"2023-06-19T12:37:58.519Z","dependency_job_id":null,"html_url":"https://github.com/ultimate-guitar/reImage","commit_stats":null,"previous_names":[],"tags_count":27,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ultimate-guitar%2FreImage","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ultimate-guitar%2FreImage/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ultimate-guitar%2FreImage/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ultimate-guitar%2FreImage/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ultimate-guitar","download_url":"https://codeload.github.com/ultimate-guitar/reImage/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251518725,"owners_count":21602202,"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","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":["golang","image-resizer","image-resizing"],"created_at":"2024-11-11T21:15:57.705Z","updated_at":"2026-03-03T08:12:00.763Z","avatar_url":"https://github.com/ultimate-guitar.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# reImage\n\n## Features\n1. No os.exec call of pngquant or mozjpeg. Only bindings to libraries.\n2. Using libvips for fast image resizing\n3. Docker container uses libvips compiled with mozjpeg instead of libjpeg-turbo. MozJPEG makes tradeoffs that are intended to benefit Web use cases and focuses solely on improving encoding, so it's best used as part of a Web encoding workflow.\n4. png images are optimized with libimagequant (backend library of pngquant)\n\n\n## Install steps\n1. Deploy it with Docker\n2. Configure frontend\n3. Enjoy!\n\n## Deploy\n1. Pull docker container:  `docker pull larrabee/reimage:1.2.5`\n2. Run it with `docker run -d -p 7075:7075 larrabee/reimage:1.2.5` or use docker-compose config:\n```yml\nversion: '2.2'\nservices:\n  reImage:\n    image: larrabee/reimage:1.2.5\n    restart: always\n    ports:\n      - \"7075:7075\"  \n```\n\n## Configure frontend\nThis is basic Nginx config for online resizing with nginx cache.\n```nginx\nhttp {\n    proxy_cache_path /var/www/resize_cache levels=1:2 \n    keys_zone=resized_img:64m inactive=48h max_size=5G use_temp_path=off;\n\n    server {\n        listen       80;\n        server_name  example.com;\n        root /var/www/example.com/;\n\n        location /img/ {\n           location ~* \\.(jpg|jpeg|png|ico)(\\@[0-9xX]+)$ {\n             proxy_pass http://localhost:7075; #Node with running image resizer\n             proxy_set_header X-RESIZE-SCHEME \"http\";\n             proxy_set_header X-RESIZE-BASE \"example.com\";\n             #Nginx cache. Optional\n             proxy_cache_valid  200 48h;\n             proxy_cache_valid  404 400 5m;\n             proxy_cache_valid 500 502 503 504 10s;\n             add_header X-Cache-Status $upstream_cache_status;\n             proxy_cache resized_img;\n           }\n        }\n    }\n}\n```\nRequired options: \n1. Replace `localhost:7075` with your hostname and port if you ran resizer in different node. \n2. Set `X-RESIZE-SCHEME \"http\"` if your image server with original images run over http (by default use https). \n3. Set you image server hostname here: `X-RESIZE-BASE \"example.com\"` \n\nOptional: \n1. Set `X-RESIZE-QUALITY` header if you want to override quality settings. Default value: 80, allowed values: 1-100 \n2. Set `X-RESIZE-COMPRESSION` header if you want to override compression settings. Default value: 6, allowed values: 0-9 \n\n\n## Enjoy!\n* Upload [test image](samples/jpeg/bird_1920x1279.jpg) to `/img/test.jpg` on your server\n* Get original image [`http://example.com/img/test.jpg`](http://example.com/img/test.jpg) (naturally it must be present on your server).\n* Get resized to 1280x720 version [`http://example.com/img/test.jpg@1280`](http://example.com/img/test.jpg@1280) (height resolution will be calculate automatically)\n* Another way: [`http://example.com/img/test.jpg@x720`](http://example.com/img/test.jpg@x720) (width resolution will be calculate automatically)\n* Get resized to 500x500 version (image will be resized and striped to 500x500) [`http://example.com/img/test.jpg@500x500`](http://example.com/img/test.jpg@500x500)  \n* Get resized to 500x500 version converted to webp (image will be resized and striped to 500x500 and converted to webp) [`http://example.com/img/test.jpg@500x500?fmt=webp`](http://example.com/img/test.jpg@500x500?fmt=webp). Supported formats: jpeg (or jpg), png, webp, tiff.  \n* Get resized to 500x500 version with custom compression (image will be resized and striped to 500x500) [`http://example.com/img/test.jpg@500x500?cmp=9`](http://example.com/img/test.jpg@500x500?cmp=9). Compression value range: from 0 to 9.  \n* Get resized to 500x500 version with custom quality (image will be resized and striped to 500x500) [`http://example.com/img/test.jpg@500x500?qlt=100`](http://example.com/img/test.jpg@500x500?qlt=100). Quality value range: from 0 to 100.  \n* Get resized to 500x500 version with custom background color [`http://example.com/img/test.jpg@500x500?bgclr=003cfa`](http://example.com/img/test.jpg@500x500?qlt=100). Format: RGB in HEX encoding, like \"ffffff\" for white. Default: \"000000\" for none.\n\n\n## Benchmark\nSee [benchmark Wiki page](https://github.com/ultimate-guitar/reImage/wiki/Benchmark)\n\n## LICENSE\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fultimate-guitar%2Freimage","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fultimate-guitar%2Freimage","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fultimate-guitar%2Freimage/lists"}