{"id":31149484,"url":"https://github.com/notreeceharris/rgba-data-encoder","last_synced_at":"2025-09-18T17:53:17.982Z","repository":{"id":304735002,"uuid":"1019735055","full_name":"NotReeceHarris/rgba-data-encoder","owner":"NotReeceHarris","description":"Encode data into a PNG using RGBA pixel channels.","archived":false,"fork":false,"pushed_at":"2025-07-14T21:33:32.000Z","size":77514,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-17T13:55:15.394Z","etag":null,"topics":["compression","encoder-decoder","lossless","steganography"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NotReeceHarris.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,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-14T19:37:27.000Z","updated_at":"2025-08-09T18:03:33.000Z","dependencies_parsed_at":"2025-07-15T02:22:49.156Z","dependency_job_id":"da2d02ea-b6f8-441d-93a6-24e9cac65d82","html_url":"https://github.com/NotReeceHarris/rgba-data-encoder","commit_stats":null,"previous_names":["doodad-labs/rgba-data-encoder","notreeceharris/rgba-data-encoder"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/NotReeceHarris/rgba-data-encoder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NotReeceHarris%2Frgba-data-encoder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NotReeceHarris%2Frgba-data-encoder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NotReeceHarris%2Frgba-data-encoder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NotReeceHarris%2Frgba-data-encoder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NotReeceHarris","download_url":"https://codeload.github.com/NotReeceHarris/rgba-data-encoder/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NotReeceHarris%2Frgba-data-encoder/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275806095,"owners_count":25531917,"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-09-18T02:00:09.552Z","response_time":77,"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":["compression","encoder-decoder","lossless","steganography"],"created_at":"2025-09-18T17:53:14.985Z","updated_at":"2025-09-18T17:53:17.976Z","avatar_url":"https://github.com/NotReeceHarris.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RGBA Data Encoder  \n\nThis project encodes arbitrary data into PNG images by packing raw bytes into RGBA pixel channels. It works by converting input data into hexadecimal format, then storing two hex characters (one byte) per PNG channel (R, G, B, A), achieving 8 hex characters (4 bytes) of storage per pixel.  \n\nThe encoding is completely lossless - files can be perfectly reconstructed from the generated images. However, this is not a compression algorithm. For already compressed files like PDFs or videos, the PNG output will typically be slightly larger than the original. For uncompressed text files, the size remains about the same.  \n\nSome example encodings are included:  \n- [doom.pdf](https://github.com/ading2210/doompdf) encodes to 4.8MB (original 6.2MB) -1.4MB\n- The [Bad Apple video](https://dn720401.ca.archive.org/0/items/TouhouBadApple/Touhou%20-%20Bad%20Apple.mp4) encodes to 37.8MB (original 21.7MB) +16.1MB \n\nWhile this doesn't compress data, it provides an interesting way to represent any file as an image. Potential uses include archival storage, steganography, or simply as a novelty encoding method. The simple byte-level packing ensures reliable round-trips with no data loss.  \n\nBelow is [doom.pdf](https://github.com/ading2210/doompdf) as a image, in this case data has been compressed:\n\n![Doom.pdf as a image](./test/doom.pdf.png)\n\nThe compression isnt amazing and in most cases it doesnt compress but increases depending on the original data format, for example here is [bad apple](https://dn720401.ca.archive.org/0/items/TouhouBadApple/Touhou%20-%20Bad%20Apple.mp4) encoded:\n\n![Touhou - Bad Apple](./test/bad-apple.mp4.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnotreeceharris%2Frgba-data-encoder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnotreeceharris%2Frgba-data-encoder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnotreeceharris%2Frgba-data-encoder/lists"}