PDA

Visualizza la versione completa : [SEMI OT] Creare Bitmap in Blocco Note


markanoid
09-01-2005, 14:09
So che potrei sembrare pazzo ma ho questa richiesta da fare:
è possibile creare un'immagine bitmap da zero scrivendola su blocco note, ovviamente conoscendone le dimenzioni e i valori delle singole componenti di R,G e B di ogni pixel? Del tipo potrà mai funzionare un file scritto a mano e poi salvato con estensione bmp? :messner:

Poi per la funzione in C per riempire la matrice di pixel mi arrangio... (il mio problema è sapere come è strutturato il file e come vanno impaginate intestazioni varie e righe di pixel) :master:

Grazie per la disponibilità, se riuscite a chiarirmi le idee ve ne arei grato :confused:

MaRKaNoID

LeleFT
09-01-2005, 14:49
Tecnicamente è fattibile. Solo che non è così semplice: cerca del materiale che ti illumini sulla struttura dei file Bitmap così potrai constatare che la cosa è fattibile.

In pratica, un file bitmap consiste in un'intestazione: ogni byte (o coppia di byte) corrisponde ad un campo dell'intestazione che ha un proprio significato. Alcuni campi sono i seguenti:

DIMENSIONE DELL'IMMAGINE (larghezza, altezza in pixel)
PROFONDITA' DI COLORE (b/w, 4 colori, 8 colori, 16 colori, 256 colori... ecc)
BYTE RISERVATI
...

Poi c'è la parte dei dati... se non ricordo male questa parte è abbastanza semplice, ma rispetta una struttura particolare: i primi byte corrispondono agli ultimi pixel dell'immagine (in basso a destra) e vengono memorizzati per righe: prima l'ultima riga, poi la penultima, ecc...

Cerca con Google e qualcosa trovi di sicuro.


Ciao. :ciauz:

Johnny_Depp
09-01-2005, 15:04
http://www.galileimirandola.it/frattali/nuova_pa6.htm (è tra le pillole in rilievo) :ciauz:

p.s. prova a creare un solo pixel nero (1x1) con PAINT (salvalo come bitmap 24 bit) e poi leggi/studia il file aprendolo con NOTEPAD

---

...altra discussione utile: http://forum.html.it/forum/showthread.php?s=&threadid=665870&highlight=bitmap

netarrow
09-01-2005, 19:16
Ho provato per un solo pixel 489.570 bytes da guardare :maLOL: .

Se lo provi ad aprire con un editor esadecimale si capisce molto meglio.

:ciauz:

Johnny_Depp
09-01-2005, 19:22
Originariamente inviato da netarrow
Ho provato per un solo pixel 489.570 bytes da guardare :maLOL: .

Se lo provi ad aprire con un editor esadecimale si capisce molto meglio.

:ciauz:
una bitmap 24 bit (1x1) pesa 58 byte

netarrow
09-01-2005, 19:44
Originariamente inviato da Johnny_Depp
una bitmap 24 bit (1x1) pesa 58 byte

ora ho capito, risolto.
Interessava anche a me grazie :)

:ciauz:

markanoid
09-01-2005, 21:00
Scusate ma ci ho capito pochino... Trattatemi come se fossi assolutamente imbecille... :fagiano:

1) Ho provato a creare l'immagine 1x1 a 24 bit, ma se la apro con notepad non mi dà un risultato granchè comprensibile
2) Aprirla con un editor esadecimale? Che significa? Quale, per esempio? E che cosa ci capisco poi?
3) Non è che si trova un esempio di "bmp vuota" da riempire solo con dimensioni, profondità di colore e matrice di pixel rgb?

Abbiate pazienza ma le mie conoscenze in questo campo sono molto limitate...

cicciox80
10-01-2005, 12:55
Io ho da poco fatto un programma in java identico simile photoshop (include filtri, ridimensionamenti, curve colori etc), con tanto di apertura e salvataggio file.

Ho utilizzato le librerie JAI che hanno incapsulato in maniera trasparente le strutture dei file di immagine.

Io credo ti sia inutile "riscoprire l'acqua calda", sicuramente in C ci saranno delle librerie atte ad aprire un file ed a memorizzarlo in una struttura quale una matrice (o più matrici a seconda del numero di bande).
Inoltre se una libreria esiste già, i suoi algoritmi saranno sicuramente il massimo a livello computazionale

LeleFT
10-01-2005, 13:57
Un editor esadecimale è un programma che apre un file e te lo fa vedere, byte per byte, in esadecimale. Praticamente tutti hanno anche una parte che visualizza ciascun carattere anche in codice ASCII (praticamente ti fa vedere anche i caratteri). Un semplicissimo editor lo puoi trovare qui (http://www.benve.org/Download/hexedit.zip) oppure cercando con Google.

Ad esempio, se tu hai un file testuale con la sola scritta "CIAO A TUTTI QUANTI VOI", un editor esadecimale te lo visualizza in questo modo:


0000 | 43 49 41 4F 20 41 20 54 55 54 54 49 20 51 55 41 | CIAO A TUTTI QUA
0010 | 4E 54 49 20 56 4F 49 | NTI VOI

La prima colonna indica da quale byte comincia il blocco di 16 byte della riga.
La seconda colonna ti dà il dump esadecimale di ciascuno dei 16 byte del blocco.
La terza riga visualizza i corrispondenti caratteri ASCII del blocco.


Il Blocco Note non è il programma migliore con cui aprire file che non siano testuali (nemmeno per file testuali con formattazioni e tabulazioni): molti caratteri, infatti, vengono tradotti, semplicemente, con un quadratino bianco (o nero) senza distinzione.


Ciao. :ciauz:

edriv
10-01-2005, 14:20
Se masticate un po' di inglese (è semplice), qui trovate un'ottima guida:

http://www.wotsit.org/download.asp?f=bmp

Loading