{"id":13459347,"url":"https://github.com/pierrre/imageserver","last_synced_at":"2025-03-24T16:31:49.247Z","repository":{"id":7938435,"uuid":"9329764","full_name":"pierrre/imageserver","owner":"pierrre","description":"Image server toolkit in Go","archived":false,"fork":false,"pushed_at":"2024-04-19T12:17:22.000Z","size":16473,"stargazers_count":2034,"open_issues_count":7,"forks_count":199,"subscribers_count":71,"default_branch":"main","last_synced_at":"2024-04-19T13:36:41.451Z","etag":null,"topics":["golang","image","server","toolkit"],"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/pierrre.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}},"created_at":"2013-04-09T19:30:48.000Z","updated_at":"2024-04-19T13:36:44.473Z","dependencies_parsed_at":"2024-04-19T13:48:52.983Z","dependency_job_id":null,"html_url":"https://github.com/pierrre/imageserver","commit_stats":{"total_commits":728,"total_committers":6,"mean_commits":"121.33333333333333","dds":0.07280219780219777,"last_synced_commit":"293395ea8103642b7a8d13d9febc3aeccecc0295"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pierrre%2Fimageserver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pierrre%2Fimageserver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pierrre%2Fimageserver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pierrre%2Fimageserver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pierrre","download_url":"https://codeload.github.com/pierrre/imageserver/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245308708,"owners_count":20594294,"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","server","toolkit"],"created_at":"2024-07-31T09:01:17.663Z","updated_at":"2025-03-24T16:31:44.237Z","avatar_url":"https://github.com/pierrre.png","language":"Go","funding_links":[],"categories":["Go","Image Processing"],"sub_categories":["Snippets Manager"],"readme":"# Image Server\nAn image server toolkit in Go (Golang)\n\n[![GoDoc](https://godoc.org/github.com/pierrre/imageserver?status.svg)](https://godoc.org/github.com/pierrre/imageserver)\n[![Build Status](https://travis-ci.org/pierrre/imageserver.svg?branch=master)](https://travis-ci.org/pierrre/imageserver)\n[![Go Report Card](https://goreportcard.com/badge/github.com/pierrre/imageserver)](https://goreportcard.com/report/github.com/pierrre/imageserver)\n\n:warning: This repository is not maintained anymore.\n\n## Features\n- HTTP server\n- Resize ([GIFT](https://github.com/disintegration/gift), [nfnt resize](https://github.com/nfnt/resize), [Graphicsmagick](http://www.graphicsmagick.org/))\n- Rotate\n- Crop\n- Convert (JPEG, GIF (animated), PNG , BMP, TIFF, ...)\n- Cache ([groupcache](https://github.com/golang/groupcache), [Redis](https://github.com/garyburd/redigo), [Memcache](https://github.com/bradfitz/gomemcache), in memory)\n- Gamma correction\n- Fully modular\n\n## Examples\n- [Simple](https://github.com/pierrre/imageserver/blob/master/examples/simple/simple.go)\n- [Advanced](https://github.com/pierrre/imageserver/blob/master/examples/advanced/advanced.go)\n- [Cache](https://github.com/pierrre/imageserver/blob/master/examples/cache/cache.go)\n- [Groupcache](https://github.com/pierrre/imageserver/blob/master/examples/groupcache/groupcache.go)\n- [HTTP Source](https://github.com/pierrre/imageserver/blob/master/examples/httpsource/httpsource.go)\n- [Mandelbrot](https://github.com/pierrre/mandelbrot/blob/master/examples/httpserver/httpserver.go) ([see interactive demo](https://mandelbrot.pierredurand.fr)) \u003cimg src=\"https://mandelbrot.pierredurand.fr/i?x=0\u0026y=0\u0026z=0\" width=\"32\" height=\"32\" /\u003e\n\n## Demos\nThese demos use the \"advanced\" example.\n\n*Click the images to see the URL parameters.*\n\n### Resize\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003cth\u003eOptions\u003c/th\u003e\n\t\t\t\u003cth\u003eResult\u003c/th\u003e\n\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003ewidth=200\u003c/code\u003e\u003cbr /\u003e(preserve aspect ratio)\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ca href=\"https://imageserver.pierredurand.fr/large.jpg?width=200\"\u003e\u003cimg src=\"https://imageserver.pierredurand.fr/large.jpg?width=200\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eheight=200\u003c/code\u003e\u003cbr /\u003e(preserve aspect ratio)\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ca href=\"https://imageserver.pierredurand.fr/large.jpg?height=200\"\u003e\u003cimg src=\"https://imageserver.pierredurand.fr/large.jpg?height=200\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003ewidth=200\u0026height=200\u003c/code\u003e\u003cbr /\u003e(change aspect ratio)\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ca href=\"https://imageserver.pierredurand.fr/large.jpg?width=200\u0026height=200\"\u003e\u003cimg src=\"https://imageserver.pierredurand.fr/large.jpg?width=200\u0026height=200\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003ewidth=200\u0026height=200\u0026mode=fit\u003c/code\u003e\u003cbr /\u003e(fit in 200x200)\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ca href=\"https://imageserver.pierredurand.fr/large.jpg?width=200\u0026height=200\u0026mode=fit\"\u003e\u003cimg src=\"https://imageserver.pierredurand.fr/large.jpg?width=200\u0026height=200\u0026mode=fit\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003ewidth=200\u0026height=200\u0026mode=fill\u003c/code\u003e\u003cbr /\u003e(fill 200x200 and crop)\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ca href=\"https://imageserver.pierredurand.fr/large.jpg?width=200\u0026height=200\u0026mode=fill\"\u003e\u003cimg src=\"https://imageserver.pierredurand.fr/large.jpg?width=200\u0026height=200\u0026mode=fill\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\n### Rotate\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003cth\u003eOptions\u003c/th\u003e\n\t\t\t\u003cth\u003eResult\u003c/th\u003e\n\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003erotation=90\u003c/code\u003e\u003cbr /\u003e(counterclockwise)\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ca href=\"https://imageserver.pierredurand.fr/large.jpg?rotation=90\u0026width=200\"\u003e\u003cimg src=\"https://imageserver.pierredurand.fr/large.jpg?rotation=90\u0026width=200\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003erotation=45\u0026background=ffaa88\u003c/code\u003e\u003cbr /\u003e(background)\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ca href=\"https://imageserver.pierredurand.fr/large.jpg?rotation=45\u0026background=ffaa88\u0026width=200\"\u003e\u003cimg src=\"https://imageserver.pierredurand.fr/large.jpg?rotation=45\u0026background=ffaa88\u0026width=200\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\n### Crop\nFormat: `min_x,min_y|max_x,max_y`\n\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003cth\u003eOptions\u003c/th\u003e\n\t\t\t\u003cth\u003eResult\u003c/th\u003e\n\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003ecrop=556,111|2156,1711\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ca href=\"https://imageserver.pierredurand.fr/huge.jpg?crop=556,111|2156,1711\u0026width=200\"\u003e\u003cimg src=\"https://imageserver.pierredurand.fr/huge.jpg?crop=556,111|2156,1711\u0026width=200\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003ecrop=956,511|1756,1311\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ca href=\"https://imageserver.pierredurand.fr/huge.jpg?crop=956,511|1756,1311\u0026width=200\"\u003e\u003cimg src=\"https://imageserver.pierredurand.fr/huge.jpg?crop=956,511|1756,1311\u0026width=200\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003ecrop=1252,799|1460,1022\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ca href=\"https://imageserver.pierredurand.fr/huge.jpg?crop=1252,799|1460,1022\"\u003e\u003cimg src=\"https://imageserver.pierredurand.fr/huge.jpg?crop=1252,799|1460,1022\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\n\n### Animated GIF\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003cth\u003eOriginal\u003c/th\u003e\n\t\t\t\u003cth\u003eResized\u003c/th\u003e\n\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003cth\u003e\u003ca href=\"https://imageserver.pierredurand.fr/animated.gif\"\u003eAnimated\u003c/a\u003e\u003c/th\u003e\n\t\t\t\u003cth\u003e\u003ca href=\"https://imageserver.pierredurand.fr/animated.gif?width=300\u0026height=300\u0026mode=fill\"\u003e\u003cimg src=\"https://imageserver.pierredurand.fr/animated.gif?width=300\u0026height=300\u0026mode=fill\" /\u003e\u003c/a\u003e\u003c/th\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003cth\u003e\u003ca href=\"https://imageserver.pierredurand.fr/spaceship.gif\"\u003eSpaceship\u003c/a\u003e\u003c/th\u003e\n\t\t\t\u003cth\u003e\u003ca href=\"https://imageserver.pierredurand.fr/spaceship.gif?width=300\"\u003e\u003cimg src=\"https://imageserver.pierredurand.fr/spaceship.gif?width=300\" /\u003e\u003c/a\u003e\u003c/th\u003e\n\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\n### Gamma correction ([more info](http://www.ericbrasseur.org/gamma.html))\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003cth\u003eOriginal\u003c/th\u003e\n\t\t\t\u003cth\u003eDisabled\u003c/th\u003e\n\t\t\t\u003cth\u003eEnabled\u003c/th\u003e\n\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ca href=\"https://imageserver.pierredurand.fr/dalai_gamma.jpg\"\u003eDalai Gamma\u003c/a\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ca href=\"https://imageserver.pierredurand.fr/dalai_gamma.jpg?width=200\u0026gamma_correction=false\"\u003e\u003cimg src=\"https://imageserver.pierredurand.fr/dalai_gamma.jpg?width=200\u0026gamma_correction=false\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ca href=\"https://imageserver.pierredurand.fr/dalai_gamma.jpg?width=200\u0026gamma_correction=true\"\u003e\u003cimg src=\"https://imageserver.pierredurand.fr/dalai_gamma.jpg?width=200\u0026gamma_correction=true\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ca href=\"https://imageserver.pierredurand.fr/gray_squares.jpg\"\u003eGray squares\u003c/a\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ca href=\"https://imageserver.pierredurand.fr/gray_squares.jpg?width=200\u0026gamma_correction=false\"\u003e\u003cimg src=\"https://imageserver.pierredurand.fr/gray_squares.jpg?width=200\u0026gamma_correction=false\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ca href=\"https://imageserver.pierredurand.fr/gray_squares.jpg?width=200\u0026gamma_correction=true\"\u003e\u003cimg src=\"https://imageserver.pierredurand.fr/gray_squares.jpg?width=200\u0026gamma_correction=true\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ca href=\"https://imageserver.pierredurand.fr/random.png\"\u003eRandom\u003c/a\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ca href=\"https://imageserver.pierredurand.fr/random.png?width=200\u0026gamma_correction=false\"\u003e\u003cimg src=\"https://imageserver.pierredurand.fr/random.png?width=200\u0026gamma_correction=false\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ca href=\"https://imageserver.pierredurand.fr/random.png?width=200\u0026gamma_correction=true\"\u003e\u003cimg src=\"https://imageserver.pierredurand.fr/random.png?width=200\u0026gamma_correction=true\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ca href=\"https://imageserver.pierredurand.fr/rings.png\"\u003eRings\u003c/a\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ca href=\"https://imageserver.pierredurand.fr/rings.png?width=200\u0026gamma_correction=false\"\u003e\u003cimg src=\"https://imageserver.pierredurand.fr/rings.png?width=200\u0026gamma_correction=false\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ca href=\"https://imageserver.pierredurand.fr/rings.png?width=200\u0026gamma_correction=true\"\u003e\u003cimg src=\"https://imageserver.pierredurand.fr/rings.png?width=200\u0026gamma_correction=true\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ca href=\"https://imageserver.pierredurand.fr/rules_sucks.png\"\u003eRules / sucks\u003c/a\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ca href=\"https://imageserver.pierredurand.fr/rules_sucks.png?width=200\u0026gamma_correction=false\"\u003e\u003cimg src=\"https://imageserver.pierredurand.fr/rules_sucks.png?width=200\u0026gamma_correction=false\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ca href=\"https://imageserver.pierredurand.fr/rules_sucks.png?width=200\u0026gamma_correction=true\"\u003e\u003cimg src=\"https://imageserver.pierredurand.fr/rules_sucks.png?width=200\u0026gamma_correction=true\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\n### Resampling\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003cth\u003eResampling\u003c/th\u003e\n\t\t\t\u003cth\u003e\u003ca href=\"https://imageserver.pierredurand.fr/rings.png\"\u003eRings\u003c/a\u003e\u003c/th\u003e\n\t\t\t\u003cth\u003e\u003ca href=\"https://imageserver.pierredurand.fr/large.jpg\"\u003eLarge\u003c/a\u003e\u003c/th\u003e\n\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003eNearest neighbor\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ca href=\"https://imageserver.pierredurand.fr/rings.png?width=200\u0026resampling=nearest_neighbor\u0026format=png\"\u003e\u003cimg src=\"https://imageserver.pierredurand.fr/rings.png?width=200\u0026resampling=nearest_neighbor\u0026format=png\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ca href=\"https://imageserver.pierredurand.fr/large.jpg?width=200\u0026resampling=nearest_neighbor\u0026format=png\"\u003e\u003cimg src=\"https://imageserver.pierredurand.fr/large.jpg?width=200\u0026resampling=nearest_neighbor\u0026format=png\" width=\"400\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003eBox\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ca href=\"https://imageserver.pierredurand.fr/rings.png?width=200\u0026resampling=box\u0026format=png\"\u003e\u003cimg src=\"https://imageserver.pierredurand.fr/rings.png?width=200\u0026resampling=box\u0026format=png\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ca href=\"https://imageserver.pierredurand.fr/large.jpg?width=200\u0026resampling=box\u0026format=png\"\u003e\u003cimg src=\"https://imageserver.pierredurand.fr/large.jpg?width=200\u0026resampling=box\u0026format=png\" width=\"400\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003eLinear\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ca href=\"https://imageserver.pierredurand.fr/rings.png?width=200\u0026resampling=linear\u0026format=png\"\u003e\u003cimg src=\"https://imageserver.pierredurand.fr/rings.png?width=200\u0026resampling=linear\u0026format=png\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ca href=\"https://imageserver.pierredurand.fr/large.jpg?width=200\u0026resampling=linear\u0026format=png\"\u003e\u003cimg src=\"https://imageserver.pierredurand.fr/large.jpg?width=200\u0026resampling=linear\u0026format=png\" width=\"400\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003eCubic\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ca href=\"https://imageserver.pierredurand.fr/rings.png?width=200\u0026resampling=cubic\u0026format=png\"\u003e\u003cimg src=\"https://imageserver.pierredurand.fr/rings.png?width=200\u0026resampling=cubic\u0026format=png\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ca href=\"https://imageserver.pierredurand.fr/large.jpg?width=200\u0026resampling=cubic\u0026format=png\"\u003e\u003cimg src=\"https://imageserver.pierredurand.fr/large.jpg?width=200\u0026resampling=cubic\u0026format=png\" width=\"400\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003eLanczos\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ca href=\"https://imageserver.pierredurand.fr/rings.png?width=200\u0026resampling=lanczos\u0026format=png\"\u003e\u003cimg src=\"https://imageserver.pierredurand.fr/rings.png?width=200\u0026resampling=lanczos\u0026format=png\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ca href=\"https://imageserver.pierredurand.fr/large.jpg?width=200\u0026resampling=lanczos\u0026format=png\"\u003e\u003cimg src=\"https://imageserver.pierredurand.fr/large.jpg?width=200\u0026resampling=lanczos\u0026format=png\" width=\"400\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\n### Quality\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003cth\u003eJPEG quality\u003c/th\u003e\n\t\t\t\u003cth\u003eResult\u003c/th\u003e\n\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e5%\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ca href=\"https://imageserver.pierredurand.fr/medium.jpg?width=200\u0026quality=5\"\u003e\u003cimg src=\"https://imageserver.pierredurand.fr/medium.jpg?width=200\u0026quality=5\" width=\"400\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e10%\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ca href=\"https://imageserver.pierredurand.fr/medium.jpg?width=200\u0026quality=10\"\u003e\u003cimg src=\"https://imageserver.pierredurand.fr/medium.jpg?width=200\u0026quality=10\" width=\"400\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e50%\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ca href=\"https://imageserver.pierredurand.fr/medium.jpg?width=200\u0026quality=50\"\u003e\u003cimg src=\"https://imageserver.pierredurand.fr/medium.jpg?width=200\u0026quality=50\" width=\"400\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\n### Convert (JPEG to GIF)\n\u003ca href=\"https://imageserver.pierredurand.fr/large.jpg?width=200\u0026format=gif\"\u003e\u003cimg src=\"https://imageserver.pierredurand.fr/large.jpg?width=200\u0026format=gif\" width=\"600\" /\u003e\u003c/a\u003e\n\n## Backward compatibility\nThere is no backward compatibility promises.\nIf you want to use it, vendor it.\nIt's always OK to change things to make things better.\nThe API is not 100% correct in the first commit.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpierrre%2Fimageserver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpierrre%2Fimageserver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpierrre%2Fimageserver/lists"}