Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » BMP in ein 2D - Array

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
11.04.2004, 12:49 Uhr
~Newbie
Gast


Verzeiht mir bitte diese Anfängerfrage, aber

Wie bekomme ich ein BMP Bild dessen Farbtiefe (24Bit) und dessen Auflösung (320x240) bekannt und immer gleich sind, in ein 2D Array (bild[x][y])?

Wäre sehr dankbar für ein Beispiel (am Besten in Visual C++ 6.0)!!

Vielen Dank im Voraus!!!
mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
11.04.2004, 13:22 Uhr
Pablo
Supertux
(Operator)


Vielleicht hilft dir das weiter
www.fun-soft.de/showtopic.php?threadid=3874
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
12.04.2004, 14:17 Uhr
~Newbie
Gast


Sorry, aber damit kann ich recht wenig anfangen. :/

Ich hab das mal so probiert:

C++:
#include<windows.h>
#include<wingdi.h>
#include<stdio.h>

HBITMAP hBitmap;
long *bild;

void main()
{

  hBitmap = LoadBitmap(NULL,"Test.bmp");
  bitmapbits = GetBitmapBits(hBitmap,230454,bild);

    printf("%d",bitmapbits);
    getch();
}


Das Programm kann normal ausgeführt werden nur bekomm ich von der Fkt. GetBitmapBits nur eine 0 als Rückgabewert was soviel wie Fehlschlag bedeutet.
Was mach ich nur falsch?
Kann mir bitte jemand weiterhelfen?

Vielen Dank und mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
12.04.2004, 14:22 Uhr
Oliver
S2-Pixelgeneral


Vielleicht solltest du das Bitmap erst in ein Device Context laden mittels SelectObject(....) und dann kannst du die Pixel mit GetPixel lesen.



--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
12.04.2004, 14:25 Uhr
Pablo
Supertux
(Operator)


Dein programm ist kein ANSI C/C++ Programm. Ich glaube nicht, dass es fertige Funktionen für Bildverarbeitung von der Standardlibrerien angeboten werden.

Ach, die main Funktion muss int sein, nicht void.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
12.04.2004, 14:40 Uhr
RedEagle



Es ist auch (glaube ich) gar nicht möglich ein Bild in der Windows-Konsole anzeigen zu lassen.
--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
12.04.2004, 14:46 Uhr
~Newbie
Gast


Danke für die prompte Hilfe!!
Ich kann eure Tips im Moment leider nicht ausprobieren!

Mir ist bewusst, dass meine Frage nicht direkt mit ANSI C++ zu tun hat, ich dachte nur es gäbe vielleicht eine Möglichkeit dieses Problem ohne den Windows Funktionen etwas "allgemeiner" zu lösen!
Gibt es vielleicht diese Möglichkeit ohne gleich mit (www.fun-soft.de/showtopic.php?threadid=3874) aufzufahren?

thx und mfg




Bearbeitung von typecast:
url-Tags gesetzt

Dieser Post wurde am 13.04.2004 um 09:41 Uhr von typecast editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
12.04.2004, 14:54 Uhr
Newbie




Zitat:
RedEagle postete
Es ist auch (glaube ich) gar nicht möglich ein Bild in der Windows-Konsole anzeigen zu lassen.


Das glaub ich auch, aber Ziel ist es auch nicht das Bild auszugeben sondern einfach nur zu verarbeiten und das Ergebnis wieder abzuspeichern!

mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
12.04.2004, 15:06 Uhr
Pablo
Supertux
(Operator)


Falsch!
Es ist möglich, Bilder in der Konsole anzuzeigen, zumindest unter Linux. Dadür brauct man Framebuffer. Ob das auch unter Windows möglich ist, weiß ich wirklich nicht, ich würde sagen nein.


Bearbeitung von Pablo:

w3m ist ein Webbrowser, der unter einer Konsole ausgeführt wird.
Hier ein ScreenShot

Seht ihr? Das geht doch!


--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 12.04.2004 um 15:38 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
12.04.2004, 15:09 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


eventuell gehts so
ohne das zu testen einfach so ins forum gehackt...
anzahl der bytes die du brauchst ist ja irgendwie länge mal breite * faktor
wobei faktor wiedegibt wie bytes ein pixel einnimmt... das können 4 byte sein... das kann aber auch nur 1 bit sein by sw-bitmaps
musst du mal die headerstruktur anschauen da sollte das drinstehen...
bie der breite musst du eventuell auch noch was draufschlagen... ich glaub das muss immer durch 4 bytes teilbare breite sein, wenn packt der die fehlende einfach sinnlosss (vermutlich nullen) dazu
musst du also eventuell um einen offset vergrössern


C++:
CString szFilename="Test.bmp";
int bytes,offset=0;  //probier mal aus was du da ggf für ein offset nehmen musst ich würds erstmal mit 0 probieren
double factor=1;// das musst du irgendwie herausbekommen wieviele bytes ein pixel sind
CBitmap pic;
BITMAP bild_header;
HBITMAP hBmp = (HBITMAP)::LoadImage(NULL,szFilename, IMAGE_BITMAP, 0, 0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
pic.Attach(hBmp);
pic.GetBitmap(&bild_header); //der ist nur damit du nach dem auslesen weisst wie gross breit usw... dein bild ist...

bytes = pic.GetBitmapBits(hBmp ,bild_header.(bmWidth+offset)*bild_header.bmHeight*factor,bild);

    



--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: