{"id":17700509,"url":"https://github.com/cdown/icopng","last_synced_at":"2025-04-30T22:23:42.123Z","repository":{"id":142271585,"uuid":"442969638","full_name":"cdown/icopng","owner":"cdown","description":"Directly embed PNGs into ICO files without reencoding.","archived":false,"fork":false,"pushed_at":"2025-03-03T20:50:13.000Z","size":28,"stargazers_count":8,"open_issues_count":2,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-11T10:45:11.769Z","etag":null,"topics":["command-line","command-line-tool","ico","image-processing","png","rust","rust-lang"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cdown.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}},"created_at":"2021-12-30T04:55:15.000Z","updated_at":"2024-12-30T19:54:48.000Z","dependencies_parsed_at":"2023-04-05T03:47:25.395Z","dependency_job_id":"f4ef4fc2-dfd2-4d18-81db-d317c7851fdf","html_url":"https://github.com/cdown/icopng","commit_stats":{"total_commits":25,"total_committers":2,"mean_commits":12.5,"dds":"0.19999999999999996","last_synced_commit":"78e2710e4fe668aefe2d4494e7a2a9e4598501fc"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdown%2Ficopng","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdown%2Ficopng/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdown%2Ficopng/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdown%2Ficopng/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cdown","download_url":"https://codeload.github.com/cdown/icopng/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251790390,"owners_count":21644212,"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":["command-line","command-line-tool","ico","image-processing","png","rust","rust-lang"],"created_at":"2024-10-24T17:42:25.411Z","updated_at":"2025-04-30T22:23:42.101Z","avatar_url":"https://github.com/cdown.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# icopng | [![Tests](https://img.shields.io/github/actions/workflow/status/cdown/icopng/ci.yml?branch=master)](https://github.com/cdown/icopng/actions?query=branch%3Amaster)\n\nicopng stores a PNG inside an ico, without converting to the traditional bitmap\nwith alpha channel. This saves a lot of space, since PNGs can be compressed and\nthere are tools to highly optimise them. Embedding PNG data inside a\nfavicon.ico file is well supported by browsers, as well.\n\nCompared to using GIMP, ImageMagick, or ICOEncoder, the resulting file can be\nan order of magnitude smaller with an optimised input PNG due to avoiding\nre-encoding. For example, with [this](tests/data/favicon.png) input image,\nicopng's output is ~30% smaller than GIMP's re-encoded PNG, and ~900% smaller\nthan traditional bitmap with alpha channel:\n\n| Engine           | Embedded format | Size   |\n|------------------|-----------------|--------|\n| icopng           | PNG             | 1.2KiB |\n| GIMP             | PNG             | 1.7KiB |\n| ImageMagick/GIMP | BMP             | 17KiB  |\n\n## Usage\n\nHere's an example of converting a traditional bitmap ico file to a PNG, and\nthen into a PNG embedded into an ico file with this tool.\n\n    # `convert' is from ImageMagick\n    convert favicon-old.ico favicon.png\n\n    # Optional: Shrink the png further\n    pngquant --skip-if-larger --strip -f --ext .png favicon.png\n    optipng favicon.png\n\n    # Embed into new favicon.ico\n    icopng favicon.png favicon.ico\n\n## Why not just use...?\n\n### image::ico::ICOEncoder, or the ico crate\n\nThe image and ico crates _do_ export PNGs inside ICO files (nice!), but they\nwill re-encode them, thus losing all the benefits of things like\noptipng/pngquant.\n\n### ImageMagick\n\nTools like imagemagick can convert from PNG to ico, but they convert to bitmap\nwith alpha instead of just putting the PNG into an ico container, which means\nthe files are very large.\n\n### GIMP\n\nGIMP can also export as a PNG inside an ICO by exporting as ICO and selecting\n\"Compressed (PNG)\", however then you don't get the benefits of\npngquant/optipng.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdown%2Ficopng","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcdown%2Ficopng","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdown%2Ficopng/lists"}