Skip to content

andutu0/netpbm-editor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

    Pentru a realiza acest program, am folosit atat functiile prezentate in
cerinta, cat si cateva functii auxiliare ce au facilitat scrierea mai
aerisita a codului, dar si o rezolvare mai modularizata a problemei.
    O sa prezint pe scurt functiile cerintei, deoarece cele auxiliare
sunt suficient de simple si intuitive pentru a nu necesita explicatii.

    1.Functia LOAD dealoca imaginea precedenta, daca aceasta exista, apoi
citeste numele fisierului, il deschide si citeste toate detaliile necesare
despre imagine. La final, marcheaza imaginea ca fiind incarcata si seteaza
selectia initiala ca fiind intreaga imagine.

    2.Functia SELECT verifica daca parametrii primiti sunt valizi, iar in caz
contrar returneaza mesajul de eroare. Daca parametrii sunt valizi, se seteaza
colturile zonei selectate conform parametrilor. De asemenea, daca acestia sunt
primiti in ordine inversa, functia ii interschimba.

    3.Functia CROP aloca o noua imagine de dimensiunile zonei selectate si
copiaza pixelii corespunzatori din imaginea initiala in cea noua. La final,
se selecteaza intreaga imagine decupata.

    4.Functia APPLY verifica parametrul primit si, in functie de acesta,
apeleaza functia corespunzatoare de initializare a nucleului respectiv.
De asemenea, aloca o noua imagine pentru a permite aplicare filtrului.
Dupa aplicarea filtrului, noua imagine este transferata in cea initiala,
iar memoria ei este eliberata.

    5.Functia EQUALIZE se foloseste de un vector de frecventa a valorilor
si de un vector al sumelor partiale pentru a nu repeta calculele la fiecare
pas. Se calculeaza mai apoi noua valoare a fiecarui pixel conform formulei,
si in final se elibereaza memoria celor doi vectori alocati initial.

    6.Functia HISTOGRAM aloca un vector de frecventa a valorilor si il
initializeaza cu 0. Apoi, este completat fiecare bin al histogramei cu
frecventele corespunzatoare si se calculeaza frecventa maxima. La final,
se afiseaza histograma si se elibereaza memoria vectorului alocat.

    7.Functia ROTATE calculeaza initial numarul de rotatii la 90 de grade
necesare pentru a ajunge la unghiul dorit. Acest lucru este posibil datorita
limitarilor cerintei de a roti imaginea sau selectia la multiplii de 90 de
grade. Urmeaza apelarea functiei de rotire la 90 de grade de 0, 1, 2 sau 3
ori, iar la final afisarea mesajului corespunzator.

    8.Functia SAVE citeste numele fisierului si un parametru care indica
daca noul fisier va fi ascii sau binar. In functie de acest parametru, se
calculeaza noul tip al imaginii si se apeleaza functia corespunzatoare de
afisare a imaginii in fisier.

    9.Functia EXIT se ocupa de eliberarea memoriei alocate pentru imagine
si pentru selectie, sau in cazul in care nu avem o imagine incarcata,
afiseaza mesajul corespunzator.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published