|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Mar 2010
Messaggi: 20
|
[C]convertire un immagine bmp in array
salve a tutti... vorrei sapere come fare per convertire un immagine bmp in un array per poi poter analizzare ogni singolo pixel... pensavo di utilizzare le funzioni presenti nella libreria stdio.h (fopen,fprintf....) però non so proprio come inizziare...
sono un principiante in c.... |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
qui c'é la descrizione del formato, ma ci sono vie decisamente piu semplici della lettura manuale. puoi caricare l'immagine con LoadImage, inserirla in un Memory DC con SelectObject e poi lavorare pixel per pixel con GetPixel e SetPixel. se tieni all'efficienza peró é meglio leggere tutti i pixels in una volta con GetDIBits, lavorarci sopra e risettarli tutti con SetDIBits; o, meglio ancora, specificare LR_CREATEDIBSECTION a LoadImage, trovare l'HANDLE della sezione in cui é mappata l'immagine con GetObject, e lavorare direttamente in memoria.
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
faccio un riassunto delle funzioni che devi usare.
per una soluzione semplice e versatile, ma inefficiente: CreateCompatibleDC, LoadImage, SelectObject, GetPixel, SetPixel. per una soluzione efficiente (ma piu complessa perché devi capire com'é fatto il layout dei pixel in memoria, che varia da un bitmap all'altro): LoadImage con LR_CREATEDIBSECTION, GetObject facendoti restituire la struttura DIBSECTION e poi lavori direttamente in memoria. |
|
|
|
|
|
#4 |
|
Junior Member
Iscritto dal: Mar 2010
Messaggi: 20
|
sembra molto difficile...cosa volevi dire con come è fatto il layout dei pixel???
|
|
|
|
|
|
#5 |
|
Junior Member
Iscritto dal: Mar 2010
Messaggi: 20
|
posso chiedere un esempio...per capire meglio le funzioni...
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jan 2007
Città: quel ramo del lago di como, che volge a mezzogiorno... ^^
Messaggi: 19625
|
sarebbe più facile chiedendoti cosa vuoi ottenere elaborando la tua bitmap.
__________________
|
|
|
|
|
|
#7 |
|
Junior Member
Iscritto dal: Mar 2010
Messaggi: 20
|
Praticamente vorrei controllare di che colore è un determinato pixel in una posizione. Mi spiego meglio. Io vorrei immettere le coordinate di un pixel e dopo di che il programma mi dovrebbe restituire il colore di quel pixel. Solo che mi piaceva l'idea di usare solo la libreria stdio.h e quindi utilizzare le funzioni tipo fopen... che consentono di gestire i file. Solo che non so come ci si può spostare tra i vari byte nel file (tipo leggere il 3 byte nel file).
|
|
|
|
|
|
#8 | |||
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
Quote:
![]() Quote:
|
|||
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Nemmeno tanto dai...
http://www.vbforums.com/showthread.php?t=261522 |
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
|
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
|
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
inoltre ha scritto che "pensava" di utilizzare solo funzioni di stdio.h, ha scritto che "gli piaceva l'idea di usare solo la libreria stdio.h"... insomma, mi sembra molto di piu una cosa hobbystica attendiamo conferme o smentite. |
|
|
|
|
|
|
#13 |
|
Junior Member
Iscritto dal: Mar 2010
Messaggi: 20
|
Scusate se rispondo appena adesso ma avevo dei problemi con la linea telefonica...
Si si esatto ho 17 anni non mi fanno fare sti esercizi. Era solo per un mio hobby, cioè mi serviva per un mio robottino che mi sto costruendo. Mi piaceva l'idea di usare solo la libreria stdio.h perchè voglio che il programma giri su tutti i SO e non mi piacciono le funzioni gia pronte, preferisco costruirmene una personalizzata... |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:24.





















