Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme.

C++ | Convert bmp to jpg | Keiner ne Ahnung?

Diskussion: C++ | Convert bmp to jpg | Keiner ne Ahnung? im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Hey, Ich hab ein Problem: Und zwar will ich ein *.bmp über c++ zu *.jpg/*.jpeg konvertieren und das dann ...

Antwort
Alt 11.05.09, 16:14   #1 (permalink)
 
Registriert seit: 05.04.09
slightlyNERD Leistung: Facit NTK
Likes: 0
Standard C++ | Convert bmp to jpg | Keiner ne Ahnung?

Anzeige

Hey,
Ich hab ein Problem:
Und zwar will ich ein *.bmp über c++ zu *.jpg/*.jpeg konvertieren und das dann speichern.
Ich hab schon ein Programm, das mir einen Screenshot macht, aber das speichert es leider nur in Bitmap (3MB).
Mit jpg hätte es nur 200KB oder sowas.

Das Screnshot-Programm (Wens interessiert)   
Code:
/* <Include> */
#include <windows.h>
#include <cstdlib>
/* </Include> */

/* <Const> */
const char *AppName="Yeah";
/* </Const> */

/* <Function> */
void SaveScreen(HWND pScreen, char Path[])
{
	int     Width  = GetSystemMetrics(SM_CXSCREEN)/*1280*/;
	int     Height = GetSystemMetrics(SM_CYSCREEN)/*1024*/;

    HDC hdcScreen;
    HBITMAP hbmScreen;
 
 
    //---------------Bitmap Informationen
    BITMAPINFO infobmp;
    infobmp.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
    infobmp.bmiHeader.biWidth = Width;
    infobmp.bmiHeader.biHeight = Height;
    infobmp.bmiHeader.biPlanes = 1;
    infobmp.bmiHeader.biBitCount = 24;
    infobmp.bmiHeader.biCompression = 0;
    infobmp.bmiHeader.biSizeImage = 0;
    infobmp.bmiHeader.biXPelsPerMeter = 0;
    infobmp.bmiHeader.biYPelsPerMeter = 0;
    infobmp.bmiHeader.biClrUsed = 0;
    infobmp.bmiHeader.biClrImportant = 0;
 
    int* bitmap = new int[Width*Height*3];
 
    BITMAPFILEHEADER bfheader;
     
    bfheader.bfType = 19778;
    bfheader.bfSize = sizeof(BITMAPFILEHEADER) + Width*Height*3 + sizeof(BITMAPINFOHEADER);
    bfheader.bfReserved1 = 0;
    bfheader.bfReserved2 = 0;
    bfheader.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
    //Bitmap -----------------------      Informationen
 
 
    hdcScreen = GetWindowDC(pScreen);
    hbmScreen = CreateCompatibleBitmap(hdcScreen, Width, Height);
 
    // temporärer DC
    HDC hdcTemp = CreateCompatibleDC(hdcScreen);
 
    // Bitmap reinselektieren
    HBITMAP hbmOld = (HBITMAP)SelectObject(hdcTemp, hbmScreen);
 
    // Inhalt von Desktop übertragen
    BitBlt(hdcTemp, 0, 0, Width, Height, hdcScreen, 0, 0, SRCCOPY);
 
    int iResult = GetDIBits(hdcTemp, hbmScreen, 0, Height, bitmap, &infobmp, DIB_RGB_COLORS);
 
    // aufräumen
    SelectObject(hdcTemp, hbmOld);
    DeleteObject(hbmScreen);
    DeleteDC(hdcTemp);
 
    HANDLE hfile = CreateFile(Path, GENERIC_WRITE, 0, 0, OPEN_ALWAYS, 0, 0);
 
    //Datei Schreiben
    DWORD word;
    WriteFile(hfile, &bfheader, 14, &word, NULL);
    WriteFile(hfile, &infobmp, 40,& word, NULL);
    WriteFile(hfile, bitmap, Width*Height*3, &word,NULL);
 
    ReleaseDC(pScreen, hdcScreen);
    CloseHandle(hfile);
    delete[] bitmap;
}
/* </Function> */

int WINAPI WinMain(      
    HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpCmdLine,
    int nCmdShow)
{	
	HWND hWnd = FindWindow(NULL, AppName);


	char *path="C:\\screen3.bmp";
	Sleep(1000);
	SaveScreen(hWnd, path);

	return 0;
}
libgdi32.a ist gelinkt.



Ich hab Dev-Cpp (mingw-Compiler)
und benutze Windows XP.

Ich hab das ganze auch schon mit libjpeg versucht, nur leider bekomm ich den Beispielcode nicht kompiliert, weils immer ein paar Linker-Errors gibt.


Kennt jmd. eine Möglichkeit das ganze zu konvertieren und, wenn mir das einer Step-by-Step erklären könnte, wie ich die jpeglib unter Dev-Cpp zum laufen bringen würde, wäre das auch super. ( Am Besten wirklich: Kopiere ... in Dev-Cpp/lib und öffne Projekt -->Pojektoptionen.....)

Ich such jetzt schon seit paar Tagen danach, aber bekomms i-wie nicht zum laufen.


Andere Tips um die Bitmap komprimiert zu bekommen sind auch erwünscht. (:

Danke schonmal im Voraus

slightlyNERD
slightlyNERD ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » C++ | Convert bmp to jpg | Keiner ne Ahnung?
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Wenn man will das ja keiner was ließt: Stein Fun Section 7 02.01.09 19:54
Filesystem convert fat32 to ntfs Cyberm@ster Hardware Probleme 9 20.10.06 09:00
listen: WSocketResolveProto: Cannot convert protocol'udp', Error 11004 eURONYMOUS Windows 0 12.09.05 22:29
Warning: Cannot convert string "-b&h-lucida-medium-r-normal-sans-*-140-*-*- DKing Linux/UNIX 0 26.04.05 18:39
Mac to IP Convert und IP to Mac Convert m4dl355 Internet Allgemein 5 17.03.05 19:21


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61