{"id":18645038,"url":"https://github.com/hrefhref/erlpuzzle","last_synced_at":"2026-05-15T21:34:21.408Z","repository":{"id":14435381,"uuid":"17146740","full_name":"hrefhref/erlpuzzle","owner":"hrefhref","description":"Erlang NIF to libpuzzle, a library to quickly find visually similar images","archived":false,"fork":false,"pushed_at":"2015-05-03T14:25:19.000Z","size":364,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-27T16:14:49.128Z","etag":null,"topics":["erlang","image-processing","image-recognition","jpg","libpuzzle","signature"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hrefhref.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-02-24T18:51:36.000Z","updated_at":"2019-06-20T12:01:53.000Z","dependencies_parsed_at":"2022-09-21T23:13:42.977Z","dependency_job_id":null,"html_url":"https://github.com/hrefhref/erlpuzzle","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hrefhref/erlpuzzle","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hrefhref%2Ferlpuzzle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hrefhref%2Ferlpuzzle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hrefhref%2Ferlpuzzle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hrefhref%2Ferlpuzzle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hrefhref","download_url":"https://codeload.github.com/hrefhref/erlpuzzle/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hrefhref%2Ferlpuzzle/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33080777,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-15T20:25:35.270Z","status":"ssl_error","status_checked_at":"2026-05-15T20:25:34.732Z","response_time":103,"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":["erlang","image-processing","image-recognition","jpg","libpuzzle","signature"],"created_at":"2024-11-07T06:14:24.403Z","updated_at":"2026-05-15T21:34:21.378Z","avatar_url":"https://github.com/hrefhref.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ErlPuzzle - libpuzzle NIF for Erlang\n\n\u003e The Puzzle library is designed to quickly find visually similar images (gif, png, jpg), even if they have been resized, recompressed, recolored or slightly modified. The library is free, lightweight yet very fast, configurable, easy to use and it has been designed with security in mind.\n\n[http://www.pureftpd.org/project/libpuzzle](http://www.pureftpd.org/project/libpuzzle)\n\nYou'll need:\n\n* erlang!!\n* libpuzzle\n* gd (+ jpg, + png).\n\n**Warning** to create signatures from files (`cvec_from_file/1`) you'll need to build Erlang with dirty schedulers\nsupport (`--enable-dirty-schedulers`).\n\n```erlang\napplication:start(puzzle).\n\n{ok,Cvec} = puzzle:cvec_from_file(\"/path/to/an/image\").\n{ok,Cvec2} = puzzle:cvec_from_file(\"/path/to/another/image\").\n\n{ok,Distance} = puzzle:compare_cvec(Cvec, Cvec2, fix_for_texts).\n%% fix_for_texts is either 0 (disabled) or 1 (enabled).\n\nDistance \u003c puzzle:threshold()\n%% if true, images are similar. :)\n\n%% -- Compression\n{ok,Ccvec} = puzzle:compress_cvec(Cvec).\n{ok,Ccvec2} = puzzle:compress_cvec(Cvec2).\n\n{ok,Ucvec} = puzzle:uncompress_cvec(Ccvec).\nUcvec == Cvec. %% true\n\n%% Compare compressed cvec\n{ok,DistanceC} = puzzle:compare_compressed_cvec(Ccvec, Ccvec2).\nDistance == DistanceC. %% true\n\n```\n\nLicence: same as libpuzzle, 2-clauses BSD public license\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhrefhref%2Ferlpuzzle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhrefhref%2Ferlpuzzle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhrefhref%2Ferlpuzzle/lists"}