![]() |
Re: warum sind .bmp sooo viel größer als Jpeg?
Echt ? Wird das komplette Bitmap kopiert? Hab mich als ich das zusammengeschrieben habe auch kurz gefragt obs en Speicherleck gibt, aber da dachte ich:
Ich weise den Pointer auf das Bitmap ja dem Image.Picture.Bitmap zu und das wird ja freigegeben wenn das Image freigegeben wird. Falsch gedacht? |
Re: warum sind .bmp sooo viel größer als Jpeg?
Delphi-Quellcode:
TPicture = class(....)
[...] property Bitmap: TBitmap read GetBitmap write SetBitmap; [...] procedure TPicture.SetBitmap(Value: TBitmap); begin SetGraphic(Value); end; procedure TPicture.SetGraphic(Value: TGraphic); var NewGraphic: TGraphic; begin NewGraphic := nil; if Value <> nil then begin NewGraphic := TGraphicClass(Value.ClassType).Create; NewGraphic.Assign(Value); //<=== Tada, es wird kopiert :-) [...] |
Re: warum sind .bmp sooo viel größer als Jpeg?
Zitat:
Zitat:
|
Re: warum sind .bmp sooo viel größer als Jpeg?
Zitat:
Eine ordentliche verlustfreie Kompression für Bitmaps bietet das PNG-Format. Für Photos eignet sich das allerdings nicht. |
Re: warum sind .bmp sooo viel größer als Jpeg?
Zitat:
Delphi-Quellcode:
Funktioniert andersrum auch. Also bmp.LoadFromFile, Jpg.Assign, Jpg.SaveToFile ...
uses ..., JPEG, ...
var jpg: TJPEG; bmp: TBitmap; begin jpg := TJPEG.Create; bmp := TBitmap.Create; try jpg.LoadFromFile ('C:\irgendeine.jpg'); bmp.Assign (jpg); // <<- JPG dem BMP zuweisen bmp.SaveToFile ('C:\irgendeine.bmp'); finally FreeAndNil (bmp); FreeAndNil (jpg); end; end; |
Re: warum sind .bmp sooo viel größer als Jpeg?
@Spiderpig_GER_15
Wenn du ein Bild "Rund" da stellen möchtest solltest du die Eigenschaft Tranzparent von TImage auf true stellen und bei TranparentColor eine Farbe zuweisen. |
Re: warum sind .bmp sooo viel größer als Jpeg?
@mimi, aber davon wird mein Bild auch nicht 'runder' oder? Wo ist eignetlich der unterschied wenn ich das Bild auf transperent stelle?
@Nuclear Ping vieeelen dank, genau das war meine Frage thx Thx :-D Spiderpig |
Re: warum sind .bmp sooo viel größer als Jpeg?
Zitat:
Gruß Frank |
Re: warum sind .bmp sooo viel größer als Jpeg?
Naja, es stimmt schon, rund wird das Viereck dadurch nicht, aber es sieht so aus der Anwender wird davon nix mitbekommen.
Alles was der Transparent Farbe entspricht wird mit dem Hintergrund Übermalt. |
Re: warum sind .bmp sooo viel größer als Jpeg?
Liste der Anhänge anzeigen (Anzahl: 1)
ich hab da mal was zusammengeschrieben...einfach ein TImage aufs form, ein bitmap reinladen und folgende Methode mit einbauen:
Delphi-Quellcode:
Gruß Frank
procedure TForm1.Button1Click(Sender: TObject);
var bmp_mask,bmp_tmp:TBitmap; const cl_trans_tmp=clWhite; cl_trans=clFuchsia; begin bmp_mask:=TBitmap.create; bmp_tmp:=TBitmap.create; //load bitmap bmp_tmp.Assign(image1.picture.bitmap); //resize mask bmp_mask.width:=bmp_tmp.width; bmp_mask.height:=bmp_tmp.height; //create the mask; bmp_mask.canvas.brush.color:=cl_trans; bmp_mask.canvas.Pen.color:=cl_trans; bmp_mask.Canvas.FillRect(rect(0,0,bmp_mask.width,bmp_mask.height)); bmp_mask.canvas.brush.color:=cl_trans_tmp; bmp_mask.canvas.Pen.color:=cl_trans_tmp; bmp_mask.canvas.ellipse(0,0,bmp_mask.width,bmp_mask.height); bmp_mask.TransparentColor:=cl_trans_tmp; bmp_mask.Transparent:=true; //merging the mask with original bitmap bmp_tmp.Canvas.Draw(0,0,bmp_mask); bmp_tmp.TransparentColor:=cl_trans; bmp_tmp.Transparent:=true; //Draw masked bitmap canvas.draw(0,0,bmp_tmp); //free Objects bmp_tmp.free; bmp_mask.free; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz