{"id":40830666,"url":"https://github.com/yujiahaol68/captchy","last_synced_at":"2026-01-21T22:22:21.635Z","repository":{"id":57555610,"uuid":"162943114","full_name":"yujiahaol68/captchy","owner":"yujiahaol68","description":"Go package captchy implements flexible generation of image CAPTCHAs.","archived":false,"fork":false,"pushed_at":"2019-01-05T05:24:18.000Z","size":65,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-06-20T15:50:34.103Z","etag":null,"topics":["captcha","captcha-png","go","golang","image-captcha","package"],"latest_commit_sha":null,"homepage":null,"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/yujiahaol68.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}},"created_at":"2018-12-24T02:55:37.000Z","updated_at":"2023-09-08T17:48:33.000Z","dependencies_parsed_at":"2022-09-10T22:23:19.002Z","dependency_job_id":null,"html_url":"https://github.com/yujiahaol68/captchy","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/yujiahaol68/captchy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yujiahaol68%2Fcaptchy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yujiahaol68%2Fcaptchy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yujiahaol68%2Fcaptchy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yujiahaol68%2Fcaptchy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yujiahaol68","download_url":"https://codeload.github.com/yujiahaol68/captchy/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yujiahaol68%2Fcaptchy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28645548,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T21:29:11.980Z","status":"ssl_error","status_checked_at":"2026-01-21T21:24:31.872Z","response_time":86,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["captcha","captcha-png","go","golang","image-captcha","package"],"created_at":"2026-01-21T22:22:21.123Z","updated_at":"2026-01-21T22:22:21.615Z","avatar_url":"https://github.com/yujiahaol68.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Package captchy\n\n![build](https://img.shields.io/travis/yujiahaol68/captchy/master.svg)\n[![Go Report Card](https://goreportcard.com/badge/github.com/yujiahaol68/captchy)](https://goreportcard.com/report/github.com/yujiahaol68/captchy)\n[![GoDoc](https://godoc.org/github.com/yujiahaol68/captchy?status.svg)](https://godoc.org/github.com/yujiahaol68/captchy)\n\n```go\nimport \"github.com/yujiahaol68/captchy\"\n```\n\ncaptchy implements a abundant CAPTCHAs image generation through flexible config\n\nSplit and rotate subImage to against OCRs\n\nSupport custom TTF font file or Go builtin fonts\n\nSupport export to Base64, PNG, JPEG image\n\nOnly std lib so it is clean\n\n**API is still not stable. Not recommend for using in production env !**\n\n## Preview\n\nGenerate from very simple to very complex captcha especially for machine, but still friendly to human\n\n![simple-captcha-png](https://github.com/yujiahaol68/captchy/blob/master/example/simple-out.png?raw=true)\n\n![complex-captcha-jpg](https://github.com/yujiahaol68/captchy/blob/master/example/j-out.jpeg?raw=true)\n\n![complex-captcha-png](https://github.com/yujiahaol68/captchy/blob/master/example/p-out.png?raw=true)\n\n## Usage\n\n### Initialize resource\n\n```go\n// Load fonts and setup default config\ncaptchy.New(captchy.Default())\n```\n\n### Gen solution\n\n```go\nrbs := captchy.RandomString()\n// Then hash and save rbs into session by yourself\n// ..\n```\n\n### Gen Image\n\n```go\nencoder := captchy.GenerateImg(rbs)\n// encoder can encode image into io.Writer, and write it anywhere you prefer.\n// It can be local file writer or http response writer\n// ..\n```\n\n## Reference\n\n[DESIGNING CAPTCHA ALGORITHM: SPLITTING AND ROTATING THE IMAGES AGAINST OCRs](http://cmp.felk.cvut.cz/~cernyad2/TextCaptchaPdf/DESIGNING%20CAPTCHA%20ALGORITHM%20SPLITTING%20AND%20ROTATING.pdf)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyujiahaol68%2Fcaptchy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyujiahaol68%2Fcaptchy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyujiahaol68%2Fcaptchy/lists"}