Größe (gemeint ist Speicherbedarf) eines TBitmaps verringern



  • Hi...

    ich hab ein Bitmap erzeugt und will das speichern:

    Graphics::TBitmap *bitmap1 = new Graphics::TBitmap();
    ...
    bitmap1->PixelFormat = pf15bit;
    bitmap1->SaveToFile("c:\\meinBild.jpg");

    Leider ist das Bild speichermäßig recht goß (1,5 MB), so daß ich es gerne wesentlich verkleinern würde. Mit PixelFormat geht das nicht ohne sehr große Qualitätsverluste (pf15bit ist sehr gut, pf8bit ist schon deutlich schlechter).

    Weiß jemand, wie ich das Bild ohne wesentlichen Qualitätsverlust verkleinern kann?

    Gruß
    Mauro



  • Nimm doch ein TJPEGImage.

    Edit: *g*

    [ Dieser Beitrag wurde am 27.01.2003 um 18:21 Uhr von Eßer editiert. ]



  • Ger nicht, ein Bitmap ist eben unkomprimiert. Du kannst es nur in ein JPEG mit geringer Kompression umwandeln (immer noch kleiner als ein bmp).



  • Danke für die Antworten. Habs jetzt so gemacht, was einen großen Erfolg bringt (Datei nur noch unter 200 KB groß):

    ...
    bitmap1->PixelFormat = pf15bit;
    TJPEGImage *jp = new TJPEGImage();
    jp->Assign(bitmap1);
    // jp->CompressionQuality = 77; (brauchts net)
    jp->Compress(); // das müßte mit dem bitmap gehen... 😉
    jp->SaveToFile("c:\\meinBild.jpg");
    delete bitmap1;
    delete jp;

    Nur: Dadurch, daß ich die jpeg.hpp includen muß, kosten mich diese paar Zeilen mehr Code 100 KB mehr exe - Datei... sowas stört mich (wenn auch das System der VCL). Darum würd ichs lieber mit dem bmp machen. Vielleicht gibts dochnen Trick?

    Gruß
    Mauro



  • Gibt es sicher nicht. bmp bleibt bmp. Du kannst nur wie du es schon gemacht hast die Farbtiefe veringern auf 255 Farben aber das bringt es ja nicht. bmps sind immer unkomprimiert.


Anmelden zum Antworten