Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » JPEG erstellen mit GetDIBits

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 <
000
08.01.2008, 22:13 Uhr
mhauert



Hallo zusammen,

ich bin gerade dabei, ein Programm zu schreiben, mit dem ich Screenshots machen und diese dann in JPEGs schreiben kann.

Außerdem will ich die Screenshots später vergleichen und bearbeiten können.
Ich nutze zum programmieren das MS VC++ 2008.

Eins vorweg, ich bin eigentlich Java Programmierer und hab mich gerade erst in C++ eingearbeitet...

Ich bin inzwischen soweit, das ich ein Bitmap bekomme:


C++:
int     nWidth  = GetSystemMetrics(SM_CXSCREEN);
int     nHeight = GetSystemMetrics(SM_CYSCREEN);

HWND    hWnd    = ::GetDesktopWindow();
HDC     hdc     = ::GetDC(hWnd);
HDC     memDC   = ::CreateCompatibleDC(hdc);
HBITMAP hbm     = ::CreateCompatibleBitmap(hdc, nWidth, nHeight);
HBITMAP hbmOld  = (HBITMAP)::SelectObject(memDC, hbm);

::BitBlt(memDC, 0, 0, nWidth, nHeight, hdc, 0, 0, SRCCOPY);
                                
BITMAPINFO bmi;

ZeroMemory(&bmi, sizeof(bmi));

bmi.bmiHeader.biSize         = sizeof(BITMAPINFOHEADER);
bmi.bmiHeader.biWidth        = nWidth;
bmi.bmiHeader.biHeight       = nHeight;
bmi.bmiHeader.biBitCount     = 24;
bmi.bmiHeader.biPlanes       = 1;
bmi.bmiHeader.biCompression  = BI_RGB;
bmi.bmiHeader.biSizeImage    = bmi.bmiHeader.biBitCount * nWidth * nHeight / 8;

BYTE *bytesbuf = new BYTE[bmi.bmiHeader.biSizeImage];

::GetDIBits( memDC,
             hbm,
             0,
             bmi.bmiHeader.biHeight,
             bytesbuf,
             &bmi,
             DIB_RGB_COLORS );


Wenn ich das Array bytesbuf dann mit nem Header zusammen inne Datei schreibe, kann ich die auch problemslos öffnen mit ner Bildbearbeitung.

Was ich aber gerne hätte, wäre das ganze halt als JPEG, aber nicht in einer Datei sondern halt nur als Array.

Kann mir da jemand helfen?

Vielen Dank im Vorraus.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.01.2008, 14:01 Uhr
Oliver
S2-Pixelgeneral


Soweit ich weiß, gibts da nichts WinAPI-internes, d.h. du musst dir eine externe Bibliothek suchen, mit der du das ganze komprimieren kannst.
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
09.01.2008, 18:39 Uhr
CppProgrammer



FreeImage is ne vergleichsweise simple Lib mit der sowas problemlos machbar ist.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


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: