È data una immagine quadrata (in formato PAM). Si determini il modo più efficiente per comporre una scacchiera ripetendo l'immagine 8 volte in ciascuna direzione (per un totale di 64 caselle), alternando l'immagine e la sua negativa. Il programma deve supportare immagini a 3 o 4 canali.
BONUS#1: aggiungere un bordo nero di un fissato numero di pixel all'immagine.
BONUS#2: il programma può supportare anche immagini con 1 o 2 canali.
File ausiliari forniti:
pamalign.h: fornisce strutture dati e funzioni per il
caricamento ed il salvataggio di immagini in formato PAM. I dati
dell'immagine sono sempre allineati ad un numero pari di canali (2, 4)
anche quando i canali dell'immagine sono dispari (1, 3).
Strutture definite:
struct imgInfo {
uint width; /* larghezza dell'immagine */
uint height; /* altezza dell'immagine */
uint channels; /* numero di canali reali dell'immagine */
uint maxval; /* massimo valore del singolo canale */
uint depth; /* bits per value */
size_t data_size; /* dimensioni in byte dell'array data */
ushort *data; /* dati */
};
Funzioni definite:
int load_pam(const char *fname, imgInfo *img);
int save_pam(const char *fname, const imgInfo *img);
che hanno come scopo rispettivamente il caricamento ed il salvataggio
dell'immagine dal/sul file fname con dati in img. Le funzioni
restituiscono 0 in caso di successo, 1 in caso di fallimento.
dati d'esempio: immagine 64x64, immagine 128x128, immagine 256x256, immagine 512x512, .