Zrzut ekranu do .jpg

problemy z tworzeniem aplikacji graficznych oraz audio i wideo

Zrzut ekranu do .jpg

Nowy postprzez Andrev01 » sobota, 14 marca 2009, 20:46

Witam. Mam taki problem, chcę by moj program zrobił zrzut ekranu do pliku .jpg. Mam funkcję, ktora zapisuje go do .bmp, ale pliki .bmp jak wiadomo są duże i ciężko je wysłać mailem. Proszę o pomoc, jakąś funkcję do zapisywania do .jpg.
Avatar użytkownika
Andrev01
Bladawiec
Bladawiec
 
Posty: 7
Dołączył(a): sobota, 14 marca 2009, 20:44
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana

Re: Zrzut ekranu do .jpg

Nowy postprzez Cyfrowy Baron » sobota, 14 marca 2009, 21:17

Po pobraniu zrzutu ekranu do bitmapy, należy dokonać konwersji do formatu JPEG i dopiero zapisać. Wszystko to znajdziesz w serwisie Cyfrowy Baron, ale podam gotowy kod:

Kod: Zaznacz cały
#include <memory>
#include <jpeg.hpp>

TCanvas *pCanvas = new TCanvas();
Graphics::TBitmap *Bmp = new Graphics::TBitmap;

HWND okno = FindWindow(NULL, "nazwa okna");
pCanvas->Handle = GetWindowDC(okno);
TRect oR;
GetWindowRect(okno, &oR);
Bmp->Width = oR.Width();
Bmp->Height = oR.Height();
Bmp->Canvas->CopyRect(Rect(0, 0, Bmp->Width, Bmp->Height), pCanvas, Rect(0, 0, Bmp->Width, Bmp->Height));

std::auto_ptr<TJPEGImage> jpegImg(new TJPEGImage());
jpegImg->Assign(Bmp);

jpegImg->SaveToFile("c:\\ekran.jpg");
ReleaseDC(0, pCanvas->Handle);

delete pCanvas, Bmp;
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Zrzut ekranu do .jpg

Nowy postprzez Andrev01 » sobota, 14 marca 2009, 22:57

Nie chcę pisać do programu nowego kodu. Podam jaki już mam i czy da się do niego dorobić konwersję?

Kod: Zaznacz cały
{
    TCanvas *PulpitCanvas = new TCanvas();
    Graphics::TBitmap *Bmp = new Graphics::TBitmap;

    PulpitCanvas->Handle = GetDC(0);
    Bmp->Width = Screen->Width;
    Bmp->Height = Screen->Height;
    Bmp->Canvas->CopyRect(Rect(0, 0, Bmp->Width, Bmp->Height), PulpitCanvas,
                          Rect(0, 0, Bmp->Width, Bmp->Height));

    try
    {
       Bmp->SaveToFile(String(windir) + "\\scr.bmp");
       ReleaseDC(0, PulpitCanvas->Handle);
    }
    catch(...)
    {
    }

    delete PulpitCanvas;
    delete Bmp;
    }


EDIT: Chyba sobie poradziłem ;)

Kod: Zaznacz cały
  {
    TCanvas *PulpitCanvas = new TCanvas();
    Graphics::TBitmap *Bmp = new Graphics::TBitmap;

    PulpitCanvas->Handle = GetDC(0);
    Bmp->Width = Screen->Width;
    Bmp->Height = Screen->Height;
    Bmp->Canvas->CopyRect(Rect(0, 0, Bmp->Width, Bmp->Height), PulpitCanvas,
                          Rect(0, 0, Bmp->Width, Bmp->Height));


        std::auto_ptr<TJPEGImage> jpegImg(new TJPEGImage());
        jpegImg->Assign(Bmp);

    try
    {
       //Bmp->SaveToFile(String(windir) + "\\scr.bmp");
       //ReleaseDC(0, PulpitCanvas->Handle);

       jpegImg->SaveToFile(String(windir) + "\\scr.jpg");

    }
    catch(...)
    {
    }

    delete PulpitCanvas;
    delete Bmp;
    }


Czy tak jest ok? Działa, ale może miałbyś jakieś zastrzeżenia?
Avatar użytkownika
Andrev01
Bladawiec
Bladawiec
 
Posty: 7
Dołączył(a): sobota, 14 marca 2009, 20:44
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana

Re: Zrzut ekranu do .jpg

Nowy postprzez Cyfrowy Baron » niedziela, 15 marca 2009, 09:14

Nie mam żadnych zastrzeżeń.
Podałem przykład właśnie po to, żebyś mógł zrozumieć zasadę i dostosować kod do własnych potrzeb, a nie po to żebyś go stosowałem dokładnie tak jak podałem.

Za konwersjÄ™ odpowiadajÄ… te dwie linijki:
Kod: Zaznacz cały
#include <memory>
#include <JPEG.hpp>

        std::auto_ptr<TJPEGImage> jpegImg(new TJPEGImage());
        jpegImg->Assign(Bmp);
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Zrzut ekranu do .jpg

Nowy postprzez Andrev01 » niedziela, 15 marca 2009, 10:22

Dzięki wielkie ;) Pozdrawiam.
Avatar użytkownika
Andrev01
Bladawiec
Bladawiec
 
Posty: 7
Dołączył(a): sobota, 14 marca 2009, 20:44
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Aplikacje multimedialne, graficzne

Kto przeglÄ…da forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 1 gość

cron