https://github.com/giovanni-iannaccone/eikon
Lightweight image processing library, built entirely from scratch to offer fast, and customizable image manipulation capabilities 🖼️
https://github.com/giovanni-iannaccone/eikon
art bmp c-plus-plus cli cpp cpp-library css-colors from-scratch image-processing library png ppm
Last synced: 5 days ago
JSON representation
Lightweight image processing library, built entirely from scratch to offer fast, and customizable image manipulation capabilities 🖼️
- Host: GitHub
- URL: https://github.com/giovanni-iannaccone/eikon
- Owner: giovanni-iannaccone
- License: gpl-3.0
- Created: 2025-01-06T20:04:40.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2026-04-21T08:07:50.000Z (about 1 month ago)
- Last Synced: 2026-04-21T09:43:14.366Z (about 1 month ago)
- Topics: art, bmp, c-plus-plus, cli, cpp, cpp-library, css-colors, from-scratch, image-processing, library, png, ppm
- Language: C++
- Homepage:
- Size: 4.53 MB
- Stars: 6
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README

[](https://github.com/giovanni-iannaccone/eikon/issues)




[](https://github.com/giovanni-iannaccone/eikon/stargazers)
# 🖼️ eikon - Image Processing Library
eikon 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.
"Make art with code, eikon takes care of the boring stuff"
## ✨ Features
- **Read images**: Load image files effortlessly into your application
- **Supported formats**: BMP PPM PNG
- **Modify Images**: Perform image editing operations with ease
- **Insert Geometric Shapes**: Add lines, rectangles, circles, and more directly into your images
- **Command-Line Utility**: Use the library directly from the command line for quick tasks
- **Dependency-light**: Everything is implemented from scratch or is from the standard library
## 👨💻 Installation
1. Clone the repository:
```bash
git clone https://github.com/giovanni-iannaccone/eikon
cd eikon
```
2. Install the library on your system:
```bash
sudo make install
```
Follow the installation guide for detailed instructions on how to install a custom library on your linux system.
>[!TIP]
>Refer to the latest release to have a stable and fully-working version of eikon
## 🎨 Usage
- Library Integration
Include the library in your C++ project:
```c++
#include
```
- Use predefined shapes
The library provides a collection of predefined shapes for use in your project:
```c++
EikonCanvas* canvas = new EikonCanvas(pixels, HEIGHT, WIDTH);
Rectangle rec {150, 200, 100, 200, 0xFFA1FF15};
canvas->draw(rec);
```
- Define your own shapes:
By using the dependency injection pattern, you can define custom shapes:
```c++
class MyShape: public Drawable {
public:
void draw(uint32_t **pixels, size_t height, size_t width) override {
// code
}
}
MyShape myshape = MyShape();
canvas->draw(myshape);
```
Refer to `./src/shapes.cpp` for the implementation details of the default shapes.
- Linking process:
If you use eikon in your project, remember to add `-leikon` to g++'s flags.
## 🧃 Command Line Utility
1. Compile the CLI tool with make:
```bash
make cli
```
2. Interact directly with images using the eikon CLI tool:
```bash
./bin/eikon_cli ./outputs/eikon_cli.ppm
```
```bash
._______.___ .____/\ ._______ .______
: .____/: __|: / \: .___ \ : \
| : _/\ | : ||. ___/| : | || |
| / \| || \ | : || | |
|_.: __/| || \ \_. ___/ |___| |
:/ |___||___\ / :/ |___|
\/ :
File dimensions are 800x800
Type help to show the menu
eikon@ppm:./outputs/eikon_cli.ppm$
```
3. If you want to use it from anywhere in your system, move the compiled binary to `/usr/bin`:
```bash
sudo mv ./bin/eikon_cli /usr/bin
```
## 👀 Who can find this helpful ?
Everybody who...
- is willing to learn a new way to create art
- has tried lots of libraries but couldn’t find one that’s easy to use
- likes building things from scratch
- is working on a big project like an image viewer or image editor
## 🔭 Learn
Read documentation to learn more about eikon implementation and how to properly use it in your C++ project.
- BMP specs
- PNG specs
- PPM specs
## 🧩 Contributing
We welcome contributing. See CONTRIBUTING.md file for details.
Please note that this project is released with a Contributor Code of Conduct. By participating in this project, you agree to abide by its terms.
### Thanks to every contributor
## ⚖️ License
This project is licensed under the GPL-3.0 License. See the LICENSE file for details.
## ⚔️ Contact
- For any inquiries or support, please contact iannacconegiovanni444@gmail.com .
- Visit my site for more informations about me and my work https://giovanni-iannaccone.github.io