{"id":30618146,"url":"https://github.com/giovanni-iannaccone/eikon","last_synced_at":"2026-05-30T04:31:24.495Z","repository":{"id":281385686,"uuid":"912989808","full_name":"giovanni-iannaccone/eikon","owner":"giovanni-iannaccone","description":"Lightweight image processing library, built entirely from scratch to offer fast, and customizable image manipulation capabilities 🖼️ ","archived":false,"fork":false,"pushed_at":"2026-04-21T08:07:50.000Z","size":4755,"stargazers_count":6,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-21T09:43:14.366Z","etag":null,"topics":["art","bmp","c-plus-plus","cli","cpp","cpp-library","css-colors","from-scratch","image-processing","library","png","ppm"],"latest_commit_sha":null,"homepage":"","language":"C++","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/giovanni-iannaccone.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-01-06T20:04:40.000Z","updated_at":"2026-04-21T08:07:54.000Z","dependencies_parsed_at":"2025-07-15T07:22:20.515Z","dependency_job_id":"dce4833c-e1c9-44c6-87dd-0452f33eb3bd","html_url":"https://github.com/giovanni-iannaccone/eikon","commit_stats":null,"previous_names":["giovanni-iannaccone/raccoon","giovanni-iannaccone/eikon"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/giovanni-iannaccone/eikon","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giovanni-iannaccone%2Feikon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giovanni-iannaccone%2Feikon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giovanni-iannaccone%2Feikon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giovanni-iannaccone%2Feikon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/giovanni-iannaccone","download_url":"https://codeload.github.com/giovanni-iannaccone/eikon/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giovanni-iannaccone%2Feikon/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33680522,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-30T02:00:06.278Z","response_time":92,"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":["art","bmp","c-plus-plus","cli","cpp","cpp-library","css-colors","from-scratch","image-processing","library","png","ppm"],"created_at":"2025-08-30T11:09:12.146Z","updated_at":"2026-05-30T04:31:24.464Z","avatar_url":"https://github.com/giovanni-iannaccone.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\r\n  \u003cimg src=\"assets/logo.png\" alt=\"Logo\"\u003e\r\n\u003c/p\u003e\r\n\r\n![License](https://img.shields.io/github/license/giovanni-iannaccone/eikon)\r\n[![Number of GitHub issues that are open](https://img.shields.io/github/issues/giovanni-iannaccone/eikon)](https://github.com/giovanni-iannaccone/eikon/issues)\r\n![Number of GitHub closed issues](https://img.shields.io/github/issues-closed/giovanni-iannaccone/eikon)\r\n![Number of GitHub pull requests that are open](https://img.shields.io/github/issues-pr-raw/giovanni-iannaccone/eikon)\r\n![GitHub commit activity](https://img.shields.io/github/commit-activity/m/giovanni-iannaccone/eikon)\r\n![Number of GitHub contributors](https://img.shields.io/github/contributors/giovanni-iannaccone/eikon)\r\n[![Number of GitHub stars](https://img.shields.io/github/stars/giovanni-iannaccone/eikon)](https://github.com/giovanni-iannaccone/eikon/stargazers)\r\n\r\n# 🖼️ eikon - Image Processing Library\r\n\r\neikon is a lightweight and efficient C++ library designed for those who want to handle image files without wading through a swamp of convoluted frameworks. It lets you load, tweak, and create images effortlessly, with built-in tools for adding geometric shapes. And for command-line lovers, there's a nifty utility that makes image manipulation refreshingly straightforward.\r\n\r\n\u003ch3 align=\"center\"\u003e\r\n\"Make art with code, eikon takes care of the boring stuff\"\r\n\u003c/h3\u003e\r\n\r\n## ✨ Features\r\n- **Read images**: Load image files effortlessly into your application\r\n- **Supported formats**: BMP PPM PNG \r\n- **Modify Images**: Perform image editing operations with ease\r\n- **Insert Geometric Shapes**: Add lines, rectangles, circles, and more directly into your images\r\n- **Command-Line Utility**: Use the library directly from the command line for quick tasks\r\n- **Dependency-light**: Everything is implemented from scratch or is from the standard library\r\n\r\n## 👨‍💻 Installation\r\n\r\n1. Clone the repository:\r\n```bash\r\ngit clone https://github.com/giovanni-iannaccone/eikon\r\ncd eikon\r\n```\r\n\r\n2. Install the library on your system:\r\n```bash\r\nsudo make install\r\n```\r\nFollow the \u003ca href=\"/docs/installation.md\"\u003einstallation guide\u003c/a\u003e for detailed instructions on how to install a custom library on your linux system.\u003cbr/\u003e\r\n\r\n\u003e[!TIP]\r\n\u003eRefer to the \u003ca href=\"https://github.com/giovanni-iannaccone/eikon/releases/latest\"\u003elatest release\u003c/a\u003e to have a stable and fully-working version of eikon\r\n\r\n## 🎨 Usage \r\n- Library Integration \u003cbr/\u003e\r\nInclude the library in your C++ project:\r\n```c++\r\n#include \u003ceikon/eikon.hpp\u003e\r\n```\r\n\r\n- Use predefined shapes \u003cbr/\u003e\r\nThe library provides a collection of predefined shapes for use in your project:\r\n```c++\r\nEikonCanvas* canvas = new EikonCanvas(pixels, HEIGHT, WIDTH);\r\n\r\nRectangle rec {150, 200, 100, 200, 0xFFA1FF15};\r\ncanvas-\u003edraw(rec);\r\n```\r\n\r\n- Define your own shapes: \u003cbr/\u003e\r\nBy using the dependency injection pattern, you can define custom shapes:\r\n```c++\r\n\r\nclass MyShape: public Drawable {\r\n\r\npublic:\r\n  void draw(uint32_t **pixels, size_t height, size_t width) override {\r\n    // code\r\n  }\r\n}\r\n\r\nMyShape myshape = MyShape();\r\ncanvas-\u003edraw(myshape);\r\n```\r\n\r\nRefer to `./src/shapes.cpp` for the implementation details of the default shapes.\r\n\r\n- Linking process: \u003cbr/\u003e\r\nIf you use eikon in your project, remember to add `-leikon` to g++'s flags.\r\n\r\n## 🧃 Command Line Utility\r\n1. Compile the CLI tool with make:\r\n```bash\r\nmake cli\r\n```\r\n\r\n2. Interact directly with images using the eikon CLI tool:\r\n```bash\r\n./bin/eikon_cli ./outputs/eikon_cli.ppm\r\n```\r\n```bash\r\n._______.___ .____/\\ ._______  .______  \r\n: .____/: __|:   /  \\: .___  \\ :      \\ \r\n| : _/\\ | : ||.  ___/| :   |  ||       |\r\n|   /  \\|   ||     \\ |     :  ||   |   |\r\n|_.: __/|   ||      \\ \\_. ___/ |___|   |\r\n   :/   |___||___\\  /   :/         |___|\r\n                  \\/    :               \r\n                                        \r\nFile dimensions are 800x800\r\nType help to show the menu\r\neikon@ppm:./outputs/eikon_cli.ppm$\r\n```\r\n\r\n3. If you want to use it from anywhere in your system, move the compiled binary to `/usr/bin`:\r\n```bash\r\nsudo mv ./bin/eikon_cli /usr/bin\r\n```\r\n\r\n## 👀 Who can find this helpful ?\r\nEverybody who...\r\n- is willing to learn a new way to create art\r\n- has tried lots of libraries but couldn’t find one that’s easy to use\r\n- likes building things from scratch\r\n- is working on a big project like an image viewer or image editor\r\n\r\n## 🔭 Learn\r\nRead \u003ca href=\"/docs/\"\u003edocumentation\u003c/a\u003e to learn more about eikon implementation and how to properly use it in your C++ project.\r\n\r\n- \u003ca href=\"https://en.wikipedia.org/wiki/BMP_file_format\"\u003e BMP specs \u003c/a\u003e\r\n- \u003ca href=\"https://www.rfc-editor.org/rfc/rfc2083.html\"\u003e PNG specs \u003c/a\u003e\r\n- \u003ca href=\"https://netpbm.sourceforge.net/doc/ppm.html\"\u003e PPM specs \u003c/a\u003e\r\n\r\n## 🧩 Contributing\r\nWe welcome contributing. See CONTRIBUTING.md file for details.\r\n\r\nPlease note that this project is released with a \u003ca href=\"CODE_OF_CONDUCT.md\"\u003eContributor Code of Conduct\u003c/a\u003e. By participating in this project, you agree to abide by its terms.\r\n\r\n### Thanks to every contributor\r\n\u003ca href=\"https://github.com/giovanni-iannaccone/eikon/graphs/contributors\"\u003e\r\n  \u003cimg src=\"https://contrib.rocks/image?repo=giovanni-iannaccone/eikon\"  alt=\"eikon Contributors\"/\u003e\r\n\u003c/a\u003e\r\n\r\n\r\n## ⚖️ License\r\nThis project is licensed under the GPL-3.0 License. See the LICENSE file for details.\r\n\r\n## ⚔️ Contact\r\n- For any inquiries or support, please contact \u003ca href=\"mailto:iannacconegiovanni444@gmail.com\"\u003e iannacconegiovanni444@gmail.com \u003c/a\u003e.\r\n- Visit my site for more informations about me and my work \u003ca href=\"https://giovanni-iannaccone.github.io\" target=”_blank” rel=\"noopener noreferrer\"\u003e https://giovanni-iannaccone.github.io \u003c/a\u003e\r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgiovanni-iannaccone%2Feikon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgiovanni-iannaccone%2Feikon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgiovanni-iannaccone%2Feikon/lists"}