Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Leggere pixel immagine BMP

Problemi di HTML? Di PHP, ASP, .NET, JSP, Perl, SQL, JavaScript, Visual Basic..?
Vuoi realizzare programmi in C, C++, Java, Ruby o Smalltalk, e non sai da che parte cominciare?
Entra qui e troverai le risposte!

Moderatori: Triumph Of Steel, archimede

Leggere pixel immagine BMP

Postdi alex.zanon » 11/07/05 22:33

Ciao a tutti,
vorrei sapere come posso fare, in linea di principio, per leggere, attraverso un programma scritto in C++ o in VB, i valori della scala RGB da un file BMP pixel per pixel, eventualmente potendoli modificare.

Grazie!

Alex
alex.zanon
Utente Junior
 
Post: 30
Iscritto il: 12/07/04 16:24
Località: Bologna

Sponsor
 

Postdi GAD » 11/07/05 23:19

Dove e quando lo vuoi fare e che strutture hai, utilizzi mfc o c++ senza mfc?

Se hai a disposizione mfc la cosa piu' semplice e stanziare un oggeto CBitmap a cui passare l'handle della bitmap che ottieni da LoadImage();
es:
handle=LoadImage();
CBitmap bitmap= new CBitmap;
bitmap->fromhandle(handle);

Adesso in memoria hai la bitmap come oggetto CBitmap e puoi utilizzre tutti i metodi dell'oggetto per accedere al contenuto come GetBitmapBits() SetBitmapBits()
Quando l'ultimo albero sarà abbattuto,l'ultimo pesce catturato,l'ultimo fiume avvelenato,
soltanto allora gli uomini si accorgeranno chei soldi non possono essere mangiati
GAD
Moderatore
 
Post: 2184
Iscritto il: 22/09/02 14:36
Località: Nebbiosa

Postdi alex.zanon » 12/07/05 09:31

Non ho le MFC. Sono scaricabili? Ho provato a cercare, ma trovo solo informazioni senza possibilità di download. Sono librerie utilizzabili anche in un ambiente diverso da Visual C++? (io uso Bloodshed DevCpp).

Senza MFC, come si fa?
Io ho provato con un metodo semplicissimo, ma ha un bug (e forse non solo quello): non legge i valori della scala RGB che sono 000!
In pratica apro il file e converto ogni carattere nel suo codice ASCII: sapendo com'è strutturato un file BitMap (intestazioni, etc...) riesco ad ottenere i valori RGB dei vari pixel, tranne di quelli che sono 000.
E' corretto in linea di principio? E' possibile risolvere questo problema o devo cambiare radicalmente strategia?

Grazie!
Alex
alex.zanon
Utente Junior
 
Post: 30
Iscritto il: 12/07/04 16:24
Località: Bologna

Postdi GAD » 12/07/05 09:58

No le mfc sono a pagmaneto e sono integrate solo in visual studio.
Sicuro che gli 000 non siano semplicemente il colore nero?
Prova acercare su google "devcpp packages" ottieni tantissime librerie e tutorial su come fare già pronti
Quando l'ultimo albero sarà abbattuto,l'ultimo pesce catturato,l'ultimo fiume avvelenato,
soltanto allora gli uomini si accorgeranno chei soldi non possono essere mangiati
GAD
Moderatore
 
Post: 2184
Iscritto il: 22/09/02 14:36
Località: Nebbiosa

Postdi zello » 12/07/05 23:24

Il formato delle bmp è documentato nel windows Platform SDK (che è libero per il download). Comunque - una volta che sai come caricare una bitmap in memoria - puoi usare:
Codice: Seleziona tutto
GetPixel

The GetPixel function retrieves the red, green, blue (RGB) color value of the pixel at the specified coordinates.

COLORREF GetPixel(
  HDC hdc,    // handle to DC
  int nXPos,  // x-coordinate of pixel
  int nYPos   // y-coordinate of pixel
);


che è spaventosamente lenta, però, se vuoi fare operazioni sulla bitmap (tipo cross-fading o comunque manipolazioni).
Il faut être toujours ivre. Tout est là : c'est l'unique question. Pour ne pas sentir l'horrible fardeau du Temps qui brise vos épaules et vous penche vers la terre,il faut vous enivrer sans trêve...
Avatar utente
zello
Moderatore
 
Post: 2351
Iscritto il: 06/05/02 13:44


Torna a Programmazione


Topic correlati a "Leggere pixel immagine BMP":


Chi c’è in linea

Visitano il forum: Nessuno e 6 ospiti