Zapisywanie bitmapy do pliku png

0

Jak zapisać bitmape do pliku png? Mamy projekt szkoly do którego potrzebny nam jest program który robi screena i zapisuje go do pliku png lun jpg. Znalazłem taki program na stornie https://causeyourestuck.io/2016/01/12/screenshot-c-win32-api/ ale nie wiem jak zapisać bitmape ze schowka do pliku png. Czytałem o CImage ale nie mama zielonego pojęcia jak to zastosować. Jeżeli ktoś by mógł pomóc będę wdzięczny.

#include <iostream>
#include <windows.h>

using namespace std;

void screenshot(POINT a, POINT b)
{
    BITMAP bmp;
    HDC     hScreen = GetDC(NULL);
    HDC     hDC     = CreateCompatibleDC(hScreen);
    HBITMAP hBitmap = CreateCompatibleBitmap(hScreen, abs(b.x-a.x), abs(b.y-a.y));
    HGDIOBJ old_obj = SelectObject(hDC, hBitmap);
    BOOL    bRet    = BitBlt(hDC, 0, 0, abs(b.x-a.x), abs(b.y-a.y), hScreen, a.x, a.y, SRCCOPY);

    OpenClipboard(NULL);
    EmptyClipboard();
    SetClipboardData(CF_BITMAP, hBitmap);
    CloseClipboard();

    SelectObject(hDC, old_obj);
    DeleteDC(hDC);
    ReleaseDC(NULL, hScreen);
    DeleteObject(hBitmap);
}

int main()
{
    POINT a,b;
    a.x=386;
    a.y=749;

    b.x=686;
    b.y=1049;

    screenshot(a,b);
}
0

HBITMAP bmp;
CImage image;
image.Attach(bmp);
image.Save(CString("filename.png"));

0
januszprogramowania napisał(a):

HBITMAP bmp;
CImage image;
image.Attach(bmp);
image.Save("filename.png");
Wyskakuje " field 'image' has incomplete type 'CImage'". Jak to naprawić?

0

Który buffor odpowiada za pixele bitmapy?, bo nie ograniam zbytnio winapi.

0

zapisać bitmape ze schowka do pliku png

  • ATL (jak sam zasugerowałeś)
  • libpng
  • GDI+
  • WIC

1 użytkowników online, w tym zalogowanych: 0, gości: 1