CS1004 – Object Oriented Programming | Semester Project National University of Computer & Emerging Sciences
A console-based C++ application that loads real JPG/PNG images, applies a pipeline of 10 image filters, and saves the processed result back to disk. Built as an OOP portfolio project demonstrating every core concept from the course.
- Load any JPG or PNG image from disk
- 10 filters: Grayscale, Invert, Brightness, Contrast Stretch, Red/Green/Blue Channel, Box Blur, Flip Horizontal, Flip Vertical
- ASCII art preview in the console after each filter
- Admin panel: manage filters and customer accounts
- Customer panel: register, login, build filter pipelines, view history
- All data persisted to
.txtfiles between runs
g++ -std=c++17 -Wall src/*.cpp -o ImageFilterStudio.exeMake sure
stb_image.handstb_image_write.hfromlibs/are accessible. Copy them intosrc/if needed.
.\ImageFilterStudio.exe| Field | Value |
|---|---|
| Username | admin |
| Password | Admin1234 |
| Concept | Where |
|---|---|
| Encapsulation | Pixel, Image, Customer |
| Abstract class | User, Filter |
| Inheritance | Admin, Customer from User; all 10 filters from Filter |
| Runtime polymorphism | vector<Filter*> in FilterSession |
| Operator overloading | Pixel::operator+, operator<< |
| Static method | Pixel::clamp() |
| Deep copy constructor | Image |
| Friend class | FilterSession ↔ Image |
| Multiple inheritance | Image : Saveable, Displayable |
| Virtual destructor | Filter |
| Method chaining | FilterSession::addFilter() |
| Dynamic memory | Pixel** grid with new / delete |
| File I/O | CustomerFileManager, CatalogFileManager, SessionFileManager |
| File | Purpose |
|---|---|
catalog.txt |
Filter list with enabled/disabled state |
customers.txt |
Registered customer accounts |
sessions.txt |
History of completed filter sessions |
blocked_cnics.txt |
CNICs banned by Admin |
- stb_image / stb_image_write — single-header public domain image I/O