• Non ci sono risultati.

Fondamenti di Informatica: esercitazione di laboratorio Programmi in linguaggio C per manipolare file bitmap e audio Pier Luca Montessoro 1. Creazione di un file bitmap: barre di colore

N/A
N/A
Protected

Academic year: 2021

Condividi "Fondamenti di Informatica: esercitazione di laboratorio Programmi in linguaggio C per manipolare file bitmap e audio Pier Luca Montessoro 1. Creazione di un file bitmap: barre di colore"

Copied!
1
0
0

Testo completo

(1)

Fondamenti di Informatica: esercitazione di laboratorio Programmi in linguaggio C per manipolare file bitmap e audio

Pier Luca Montessoro

1. Creazione di un file bitmap: barre di colore

I test dei sistemi televisivi comprendono uno schermo a “barre di colore”. Si tratta di una serie di strisce verticali in cui compaiono le sette combinazioni di colori ottenibili utilizzando, alla massima intensità, uno oppure una coppia di colori primari.

Si scriva un programma in linguaggio C che legga dalla linea di comando le dimensioni, in pixel, dell’immagine da generare, e crei il file “barre.bmp” contenente 8 strisce verticali nei colori rappresentati a lato.

Suggerimento:

Per scegliere il colore in funzione della colonna si può utilizzare un vettore costante di strutture COLORTRIPLE

2. Creazione di un file bitmap:

circonferenza

Si scriva un programma in linguaggio C che legga dalla linea di comando la dimensione N, in pixel, di una bitmap quadrata (NxN) e crei un file contenente una circonferenza rossa su fondo azzurro inscritta in tale quadrato.

Suggerimenti:

- Vanno colorati i punti la cui distanza dal centro è compresa tra il raggio interno e il raggio esterno della corona circolare la cui ampiezza è lo spessore della circonferenza che si vuole disegnare

- Si adatti lo spessore della circonferenza alla dimensione dell’immagine in modo che sia chiaramente visibile

3. Creazione di un file bitmap: scacchiera

Facendo uso delle librerie disponibili sul sito www.montessoro.it (sezione esercizi relativi alla codifica delle immagini del corso Fondamenti di Informatica 2), si scriva un programma che:

• accetti sulla linea di comando due parametri: il nome di un file (senza estensione) e un intero N che rappresenta una dimensione in pixel

• crei un file il cui nome sia quello ricevuto sulla riga di comando, l’estensione sia .BMP, e il contenuto sia l’immagine bitmap di una scacchiera quadrata NxN con 8 caselle bianche e nere per lato.

Suggerimenti:

- Creare una bitmap in memoria (CreateEmptyBitmap) - Colorarla (due cicli for annidati, una variabile che

tenga conto del colore corrente, un test sulle coordinate per cambiare il colore facendo uso dell’operatore %)

- Aprire un file in scrittura in modo “wb”

- Salvare la bitmap sul file (WriteBitmap)

4. Filtraggio di un file bitmap

Per rendere più “morbida” un’immagine è possibile applicare dei filtri. Per esempio è possibile sostituire al valore di un pixel la media pesata del suo valore e di quello dei pixel circostanti.

Si scriva un programma in linguaggio C che legga dalla linea di comando il nome di due file .BMP, legga il primo e scriva nel secondo l’immagine filtrata secondo questo algoritmo. Si sperimentino diverse versioni del programma modificando il peso dei vari pixel (questo può anche essere un parametro passato al programma sulla linea di comando) e allargando l’intorno da cui prelevare i valori per effettuare la media pesata.

Esempio (peso del pixel = 0.6, peso dell’intorno = 0.4):

nuovo valore (i,j) =

vecchio valore (i,j) * 0.6 + (vecchio valore (i-1, j)/4.0 + vecchio valore (i+1, j)/4.0 + vecchio valore (i, j-1)/4.0 + vecchio valore (i, j+1)/4.0) * 0.4

5. Creazione di una triade maggiore

Una triade maggiore (accordo maggiore) in musica è la sovrapposizione di tre note separate, rispetto alla nota di riferimento (tonica) di un intervallo di terza maggiore e un intervallo di quinta giusta.

Noto che la frequenza di riferimento internazionale per l’accordatura degli strumenti, 440 Hz, corrisponde ad un LA (e quindi anche la nota a 220 Hz – un’ottava sotto – è un LA), e che gli intervalli di terza maggiore e di quinta giusta corrispondono ai seguenti rapporti di frequenze:

4983 . 1 2 : 1 259921 . 1 2 :

1

412

712

terza maggiore quinta giusta

si scriva un programma che generi un file audio

“lamaggiore.wav” della durata di 3 secondi contenente un accordo di LA maggiore con tonica a 220 Hz.

6. Delay

Un noto effetto in musica è il delay. Si tratta di ripetere, ad un volume minore, il suono con un ritardo di alcune decine o centinaia di millisecondi, in aggiunta al suono originale.

Si scriva un programma che riceva come parametro dalla linea di comando il nome di due file .WAV, legga il primo e crei, nel secondo, il suono originale con l’aggiunta di un ritardo. Il valore del ritardo e la quantità di riduzione del volume siano letti da tastiera.

Attenzione a non cercare di scrivere più campioni di quanti memorizzabili nella struttura allocata in memoria...

7. Reverse

Scrivere un programma che inverte un file .WAV (cioè fa ascoltare il brano al contrario). È sufficiente invertire l’ordine dei campioni con un algoritmo simile a quello utilizzato a Fondamenti di Informatica I per la funzione reverse sulle stringhe.

NOTA:

SUL SITO WWW.MONTESSORO.IT SONO DISPONIBILI ALCUNI ESEMPI DI FILE BITMAP E AUDIO UTILI PER PROVARE I VOSTRI PROGRAMMI

nero rosso verde blu magent a (rosso + b lu) azzurro (verde + blu) gia llo (rosso + verde) bia n co

Riferimenti

Documenti correlati

Basandosi sul diagramma di flusso visto a lezione, si scriva un programma che calcoli lo sviluppo in serie della funzione sin(x), dove x e la precisione richiesta vengono letti

L’algoritmo di ordinamento selection sort può essere facilmente implementato in modo ricorsivo, in quanto prevede la “sistemazione” del primo elemento del vettore di dimensione n

Si scriva un programma che crei un file audio contenente un segnale a dente di sega per ciascun canale i cui parametri sono passati al programma sulla riga di comando nel

Si scriva una funzione int mystrstr (char *s, char *t) che, facendo uso della funzione mystrncmp dell’esercizio precedente, si comporti in modo simile: restituisca l’indice

• Il programma deve leggere da tastiera il nome del file nel formato sopra descritto, leggere tale file copiandone il contenuto nel vettore di struct in memoria e, infine,

- atoi: scrivere in linguaggio macchina una funzione che scriva nel registro R0 il valore intero positivo rappresentato dalla stringa ASCII presente in memoria a

• Prima di accedere ad un file e` necessario aprirlo : l’operazione di apertura compie le azioni preliminari necessarie affinche` il file possa essere acceduto (in lettura o

(5 punti) Si scriva un programma in linguaggio C che riceva sulla linea di comando il nome di un file bitmap di ingresso e il nome di un file. bitmap