{"id":22464057,"url":"https://github.com/halosghost/farbfeld","last_synced_at":"2025-10-10T08:09:03.378Z","repository":{"id":149470981,"uuid":"194366140","full_name":"HalosGhost/farbfeld","owner":"HalosGhost","description":null,"archived":false,"fork":false,"pushed_at":"2019-06-29T05:00:40.000Z","size":109,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-27T14:43:15.859Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/HalosGhost.png","metadata":{"files":{"readme":"README","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":"2019-06-29T04:59:30.000Z","updated_at":"2019-06-29T05:00:52.000Z","dependencies_parsed_at":null,"dependency_job_id":"0e0ef63c-e9f2-40cd-8df0-f9e69c31939b","html_url":"https://github.com/HalosGhost/farbfeld","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/HalosGhost/farbfeld","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HalosGhost%2Ffarbfeld","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HalosGhost%2Ffarbfeld/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HalosGhost%2Ffarbfeld/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HalosGhost%2Ffarbfeld/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HalosGhost","download_url":"https://codeload.github.com/HalosGhost/farbfeld/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HalosGhost%2Ffarbfeld/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279003294,"owners_count":26083555,"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","status":"online","status_checked_at":"2025-10-10T02:00:06.843Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2024-12-06T09:15:18.767Z","updated_at":"2025-10-10T08:09:03.361Z","avatar_url":"https://github.com/HalosGhost.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n                 ███ ███ ██  ██  ███ ███ █   ██\n                 █   █ █ █ █ █ █ █   █   █   █ █\n                 ██  ███ ██  ███ ██  ██  █   █ █\n                 █   █ █ █ █ █ █ █   █   █   █ █\n                 █   █ █ █ █ ██  █   ███ ███ ██\n\n\nWHAT IS FARBFELD?\n\tFarbfeld is a lossless image-format designed to be\n\tparsed and piped easily. It is probably the simplest\n\timage-format you can find (see FORMAT).\n\tIt does not have integrated compression, but allows\n\tcompression algorithms to work with it easily by adding\n\tlittle entropy to the image data itself. This beats PNG\n\tin many cases.\n\tGiven the free choice of compression algorithms, it\n\tis trivial to switch to better and faster ones as they\n\tshow up in the future.\n\nHOW DO I USE THE TOOLS?\n\tencoding:\n\tpng2ff \u003c example.png \u003e example.ff\n\tpng2ff \u003c example.png | bzip2 \u003e example.ff.bz2\n\n\tdecoding:\n\tff2png \u003c example.ff \u003e example.png\n\tbzcat example.ff.bz2 | ff2png \u003e example.png\n\n\tbzip2 is used in this example and a recommended\n\tcompression algorithm. Of course you are free\n\tto use something else.\n\nWHY FARBFELD?\n\tCurrent image-formats have integrated compression,\n\tmaking it complicated to read the image data.\n\tOne is forced to use complex libraries like libpng,\n\tlibjpeg, libjpeg-turbo, giflib and others, read the\n\tdocumentation and write a lot of boilerplate in order\n\tto get started.\n\tFarbfeld leaves this behind and is designed to be as\n\tsimple as possible, leaving the task of compression\n\tto outside tools.\n\tThe simple design, which was the primary objective,\n\timplicitly lead to the very good compression\n\tcharacteristics, as it often happens when you go with\n\tthe UNIX philosophy.\n\tReading farbfeld images doesn't require any special\n\tlibraries. The tools in this folder are just a toolbox\n\tto make it easy to convert between common image formats\n\tand farbfeld.\n\nHOW DOES IT WORK?\n\tIn farbfeld, pattern resolution is not done while\n\tconverting, but while compressing the image.\n\tFor example, farbfeld always stores the alpha-channel,\n\teven if the image doesn't have alpha-variation.\n\tThis may sound like a big waste at first, but as\n\tsoon as you compress an image of this kind, the\n\tcompression-algorithm (e.g. bzip2) recognizes the\n\tpattern that every 48 bits the 16 bits store the\n\tsame information.\n\tAnd the compression-algorithms get better and better\n\tat this.\n\tSame applies to the idea of having 16 bits per channel.\n\tIt sounds excessive, but if you for instance only have\n\ta greyscale image, the R, G and B channels will store\n\tthe same value, which is recognized by the compression\n\talgorithm easily.\n\tThis effectively leads to filesizes you'd normally only\n\treach with paletted images, and in some cases bzip2 even\n\tbeats png's compression, for instance when you're dealing\n\twith grayscale data, line drawings, decals and even\n\tphotographs.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhalosghost%2Ffarbfeld","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhalosghost%2Ffarbfeld","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhalosghost%2Ffarbfeld/lists"}