Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TBitmap32 einem TJPEGImage zuweisen (https://www.delphipraxis.net/28104-tbitmap32-einem-tjpegimage-zuweisen.html)

Wheelie 19. Aug 2004 17:16


TBitmap32 einem TJPEGImage zuweisen
 
Hallo!

Wie ich schon in einem anderen Thread geschrieben habe, arbeite ich mit einem TBitmap32 um Bilder geglättet zu verkleinern. Nun möchte ich ein Bitmap vom Typ TBitmap32 einem TJPEGImage zuweisen. Wie muss das korrekte Typencasting lauten??

Das hier ...
Delphi-Quellcode:
jpeg.Assign(bmp);
... funktioniert zumindest nicht :cry:

Danke für eure Unterstützung!

dizzy 19. Aug 2004 17:23

Re: TBitmap32 einem TJPEGImage zuweisen
 
\\edit: War Vollquatsch... :stupid:

dizzy 19. Aug 2004 17:24

Re: TBitmap32 einem TJPEGImage zuweisen
 
Schau dir mal die Methode DrawTo von TBitmap32 an. Damit sollte sich glaube ich was machen lassen.

Wheelie 19. Aug 2004 17:57

Re: TBitmap32 einem TJPEGImage zuweisen
 
Klappt nicht so richtig ...
Delphi-Quellcode:
...
jpeg := TJPEGImage.Create;
bmp := TBitmap.Create;
bmp.Width := b.Width;
bmp.Height := b.Height;
b.DrawTo(bmp.Handle, b.BoundsRect, b.BoundsRect); //b ist vom Typ TBitmap32
jpeg.Assign(bmp);
jpeg.CompressionQuality := 80;
jpeg.SaveToFile('d:\neu.jpg');
...
Das dabei erzeugte JPEG-File hat zwar die richtige Größe, ist aber nur weiß :gruebel:

Markus 19. Aug 2004 18:53

Re: TBitmap32 einem TJPEGImage zuweisen
 
Machs so:

Delphi-Quellcode:
jpeg := TJPEGImage.Create;
bmp := TBitmap.Create;

bmp.assign(b);
jpeg.Assign(bmp);

jpeg.SaveToFile('d:\neu.jpg');

bmp.free;
jpeg.free;
Das müsste gehen.

Wheelie 19. Aug 2004 19:25

Re: TBitmap32 einem TJPEGImage zuweisen
 
JA ... es funzt! Danke ;)


edit: hatte erst was verwechselt

Markus 19. Aug 2004 19:28

Re: TBitmap32 einem TJPEGImage zuweisen
 
Ja, ich weiß, aber bei mit konnte ich ein TBitmap32 einem TBitmap zuordnen.

dizzy 19. Aug 2004 19:39

Re: TBitmap32 einem TJPEGImage zuweisen
 
Zitat:

Zitat von Markus
Machs so:

Delphi-Quellcode:
jpeg := TJPEGImage.Create;
bmp := TBitmap.Create;

bmp.assign(b);
jpeg.Assign(bmp);

jpeg.SaveToFile('d:\neu.jpg');

bmp.free;
jpeg.free;
Das müsste gehen.

Ist aber recht unschön, und wenig performat, da das ganze dann ja 2x echt kopiert werden muss. Der Fehler in dem Code oben von Wheelie:
Code:
b.DrawTo([b]bmp[/b].Handle, b.BoundsRect, b.BoundsRect);
Da hätte das jpeg stehen müssen ;)
\\edit: Und das jpeg.Assign(bmp); muss raus, und das jpeg muss vorher auf die richtige Größe gesetzt werden.

\\nochmal: Öhm, Wheelie, du hast ja auch ein bmp als Zwischenspeicher drin. Müsste doch aber auch ohne gehen, bei Verwendung von DrawTo, oder?

\\uuuund nochmal: Okay, es scheint wohl nicht so ohne weiters zu gehen, da TJPEGImage kein Handle hat, das man DrawTo übergeben könnte... zu schade auch. Dann eben mit TBitmap dazwischen (is aber hässlich *möö* ;))
(Evtl. könnte man mit einem Memorystream was drehen!)


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz