Wie wird ein hBitmap als JPEG-Bild gespeichert?

04/02/2008 - 18:38 von Edzard Egberts | Report spam
Hallo,

obwohl ich im Thread "Zugriff auf Webcam-Verzeichnis" einen Haufen
Arbeit bei der Realisierung der TWAIN-Schnittstelle befürchtete, klappte
die Verwendung des Codeguru-Wrapper
http://www.codeguru.com/Cpp/G-M/mul....php/c1585 auf
Anhieb ohne Probleme. Geliefert wird das Bild über folgende Methode:

void dlg_twain::CopyImage(HANDLE hBitmap, TW_IMAGEINFO& info)
{}

TW_IMAGEINFO ist folgendermaßen definiert:

typedef struct {
TW_FIX32 XResolution; // Resolution in the horizontal
TW_FIX32 YResolution; // Resolution in the vertical
TW_INT32 ImageWidth; // Columns in the image, -1 if unknown by DS
TW_INT32 ImageLength; // Rows in the image, -1 if unknown by DS
TW_INT16 SamplesPerPixel; // Number of samples per pixel, 3 for RGB
TW_INT16 BitsPerSample[8]; // Number of bits for each sample
TW_INT16 BitsPerPixel; // Number of bits for each padded pixel
TW_BOOL Planar; // True if Planar, False if chunky
TW_INT16 PixelType; // How to interp data; photo interp (TWPT_)
TW_UINT16 Compression; // How the data is compressed (TWCP_xxxx)
} TW_IMAGEINFO, FAR * pTW_IMAGEINFO;

mit

typedef struct {
TW_INT16 Whole; /* maintains the sign */
TW_UINT16 Frac;
} TW_FIX32, FAR *pTW_FIX32;

Angewandt wird das im Beispiel folgendermaßen, um das Bild anzuzeigen:

CDIB dib;
dib.CreateFromHandle(hBitmap,bits);
if(bits == 24) pDoc->m_Dib = dib;
else Create24Bit(dib,pDoc->m_Dib);

Jetzt möchte ich die HWND hBitmap als Bilddatei auf die Festplatte
speichern, bevorzugt im JPEG-Format. Ist das mit der Windows-API machbar
und wenn ja, wie? Wenn nein, gibt es vielleicht eine Bibliothek, die ich
dafür benutzen kann, z.B. die JPEG-Library? Irgendwelche Hinweise wie
das zu machen ist?

Danke,

Ed
 

Lesen sie die antworten

#1 Johann Obermayr
05/02/2008 - 08:58 | Warnen spam
Edzard Egberts schrieb:
Hallo,

obwohl ich im Thread "Zugriff auf Webcam-Verzeichnis" einen Haufen
Arbeit bei der Realisierung der TWAIN-Schnittstelle befürchtete, klappte
die Verwendung des Codeguru-Wrapper
http://www.codeguru.com/Cpp/G-M/mul....php/c1585 auf
Anhieb ohne Probleme. Geliefert wird das Bild über folgende Methode:

void dlg_twain::CopyImage(HANDLE hBitmap, TW_IMAGEINFO& info)
{}

TW_IMAGEINFO ist folgendermaßen definiert:

typedef struct {
TW_FIX32 XResolution; // Resolution in the horizontal
TW_FIX32 YResolution; // Resolution in the vertical
TW_INT32 ImageWidth; // Columns in the image, -1 if unknown by DS
TW_INT32 ImageLength; // Rows in the image, -1 if unknown by DS
TW_INT16 SamplesPerPixel; // Number of samples per pixel, 3 for RGB
TW_INT16 BitsPerSample[8]; // Number of bits for each sample
TW_INT16 BitsPerPixel; // Number of bits for each padded pixel
TW_BOOL Planar; // True if Planar, False if chunky
TW_INT16 PixelType; // How to interp data; photo interp (TWPT_)
TW_UINT16 Compression; // How the data is compressed (TWCP_xxxx)
} TW_IMAGEINFO, FAR * pTW_IMAGEINFO;

mit

typedef struct {
TW_INT16 Whole; /* maintains the sign */
TW_UINT16 Frac;
} TW_FIX32, FAR *pTW_FIX32;

Angewandt wird das im Beispiel folgendermaßen, um das Bild anzuzeigen:

CDIB dib;
dib.CreateFromHandle(hBitmap,bits);
if(bits == 24) pDoc->m_Dib = dib;
else Create24Bit(dib,pDoc->m_Dib);

Jetzt möchte ich die HWND hBitmap als Bilddatei auf die Festplatte
speichern, bevorzugt im JPEG-Format. Ist das mit der Windows-API machbar
und wenn ja, wie? Wenn nein, gibt es vielleicht eine Bibliothek, die ich
dafür benutzen kann, z.B. die JPEG-Library? Irgendwelche Hinweise wie
das zu machen ist?

Danke,

Ed


Hallo,

Da gibt es mehrere Klassen.
Ich verwende am liebsten CxImage von www.codeproject.com

Jimmy

Ähnliche fragen