{"id":13600743,"url":"https://github.com/tj/letterbox","last_synced_at":"2025-08-20T18:34:28.786Z","repository":{"id":57504629,"uuid":"216805527","full_name":"tj/letterbox","owner":"tj","description":"Go program to batch-process letter-boxing of photographs.","archived":false,"fork":false,"pushed_at":"2023-03-07T02:21:23.000Z","size":21,"stargazers_count":168,"open_issues_count":2,"forks_count":11,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-12-10T02:21:30.555Z","etag":null,"topics":["golang","image-processing","instagram","photography"],"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/tj.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":"tj"}},"created_at":"2019-10-22T12:13:08.000Z","updated_at":"2024-07-23T11:41:52.000Z","dependencies_parsed_at":"2024-01-14T04:45:28.784Z","dependency_job_id":"f64d69c0-71be-4649-952d-fb30bfd15707","html_url":"https://github.com/tj/letterbox","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tj%2Fletterbox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tj%2Fletterbox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tj%2Fletterbox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tj%2Fletterbox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tj","download_url":"https://codeload.github.com/tj/letterbox/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230445927,"owners_count":18227060,"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-processing","instagram","photography"],"created_at":"2024-08-01T18:00:47.747Z","updated_at":"2024-12-19T14:08:28.682Z","avatar_url":"https://github.com/tj.png","language":"Go","funding_links":["https://github.com/sponsors/tj"],"categories":["Go"],"sub_categories":[],"readme":"# Letterbox\n\nA tiny Go program to batch-process letter-boxing of photographs.\n\n## Installation\n\nFrom [gobinaries.com](https://gobinaries.com):\n\n```sh\n$ curl -sf https://gobinaries.com/tj/letterbox/cmd/letterbox | sh\n```\n\nFrom source:\n\n```\n$ go get github.com/tj/letterbox/cmd/letterbox\n```\n\n## Usage\n\n```\nUsage of letterbox:\n  -aspect string\n    \tOutput aspect ratio (default \"16:9\")\n  -concurrency int\n    \tConcurrency of image processing (default 8)\n  -force\n    \tForce image reprocess when it exists\n  -output string\n    \tImage output directory (default \"processed\")\n  -padding int\n    \tOutput image padding in percentage\n  -quality int\n    \tOutput jpeg quality (default 90)\n  -white\n    \tOutput a white letterbox\n```\n\n## Examples\n\nExample of 1:1\n\n```\n$ letterbox -aspect 1:1\n```\n\n![](https://apex-software.imgix.net/github/tj/letterbox/1-1.jpg?w=500\u0026dpr=2)\n\nExample of 4:3\n\n```\n$ letterbox -aspect 4:3\n```\n\n![](https://apex-software.imgix.net/github/tj/letterbox/4-3.jpg?w=500\u0026dpr=2)\n\nExample of 16:9 (the default)\n\n```\n$ letterbox -aspect 16:9\n```\n\n![](https://apex-software.imgix.net/github/tj/letterbox/16-9.jpg?w=500\u0026dpr=2)\n\nExample of explicitly listing images:\n\n```\n$ letterbox DSCF6719.jpg DSCF6718.jpg\n```\n\n![](https://apex-software.imgix.net/github/tj/letterbox/16-9.jpg?w=500\u0026dpr=2)\n\nExample of 1:1 with a white background and 6% padding:\n\n```\n$ letterbox -white -aspect 1:1 -padding 6\n```\n\n![](https://apex-software.imgix.net/github/tj/letterbox/1-1-white.jpg?w=500\u0026dpr=2)\n\n---\n\n[![GoDoc](https://godoc.org/github.com/tj/letterbox?status.svg)](https://godoc.org/github.com/tj/letterbox)\n![](https://img.shields.io/badge/license-MIT-blue.svg)\n![](https://img.shields.io/badge/status-stable-green.svg)\n\n## Sponsors\n\nThis project is sponsored by my [GitHub sponsors](https://github.com/sponsors/tj):\n\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/0\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/0)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/1\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/1)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/2\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/2)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/3\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/3)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/4\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/4)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/5\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/5)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/6\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/6)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/7\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/7)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/8\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/8)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/9\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/9)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/10\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/10)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/11\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/11)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/12\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/12)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/13\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/13)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/14\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/14)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/15\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/15)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/16\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/16)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/17\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/17)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/18\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/18)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/19\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/19)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/20\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/20)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/21\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/21)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/22\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/22)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/23\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/23)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/24\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/24)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/25\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/25)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/26\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/26)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/27\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/27)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/28\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/28)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/29\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/29)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/30\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/30)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/31\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/31)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/32\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/32)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/33\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/33)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/34\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/34)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/35\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/35)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/36\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/36)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/37\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/37)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/38\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/38)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/39\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/39)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/40\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/40)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/41\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/41)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/42\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/42)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/43\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/43)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/44\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/44)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/45\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/45)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/46\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/46)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/47\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/47)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/48\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/48)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/49\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/49)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/50\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/50)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/51\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/51)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/52\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/52)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/53\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/53)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/54\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/54)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/55\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/55)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/56\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/56)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/57\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/57)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/58\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/58)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/59\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/59)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/60\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/60)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/61\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/61)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/62\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/62)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/63\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/63)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/64\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/64)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/65\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/65)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/66\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/66)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/67\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/67)\n[\u003cimg src=\"https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/avatar/68\" width=\"35\"\u003e](https://sponsors-api-u2fftug6kq-uc.a.run.app/sponsor/profile/68)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftj%2Fletterbox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftj%2Fletterbox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftj%2Fletterbox/lists"}