AW: Bildbearbeitung mit Delphi
Zitat:
|
AW: Bildbearbeitung mit Delphi
Also ich häng nun doch beim verkleinern.
Ich nutze folgenden Code:
Delphi-Quellcode:
Doch nun gibt es ein paar Dinge: 1. Damit funktionieren nur Bitmaps und 2. Wird das Bild oben klein angezeigt und darum ein weißen Hintergrund. Ich möchte, dass das Bild nun groß angezeigt wird, dass man die einzelnen Pixelgrenzen sieht. Vielleicht kann mir jmd. helfen
Image2.Canvas.StretchDraw(Rect(0,
0, 30, 30), image1.Picture.bitmap); |
AW: Bildbearbeitung mit Delphi
Ganz habe ich nicht verstanden, wo genau Dein Problem liegt, aber es gibt eigentlich verschiedene Verfahren, wie gestretcht wird...
Also eigentlich solltest Du Dir das mal so ganz schnell selber schreiben können, so wie ich das hier verstanden habe. Hier mal eine Unit, wie man das mit Graphics32 machen kann :
Delphi-Quellcode:
procedure GR32Stretch(Src: TBitmap32; Dst: TBitmap; proportional: Boolean = True; Quality: Integer = 3);
var Dst2: TBitmap32; begin Dst2 := TBitmap32.Create; Dst2.Assign(Dst); GR32Stretch(Src, Dst2, proportional, Quality); Dst.Assign(Dst2); Dst2.Free; end; procedure SetProportional(dstBMP: TBitmap32; scrRECT: TRect); begin if RectHeight(scrRECT) > RectWidth(scrRECT) then dstBMP.Width := Round(RectWidth(scrRECT) * dstBMP.Height / RectHeight(scrRECT)) else dstBMP.Height := Round(RectHeight(scrRECT) * dstBMP.Width / RectWidth(scrRECT)); end; procedure GR32Stretch(Src, Dst: TBitmap32; proportional: Boolean = True; Quality: Integer = 3); // http://graphics32.org/wiki/FAQ/Resampling var R3: TKernelResampler; R2: TLinearResampler; R1: TDraftResampler; R0: TNearestResampler; begin if (Src.Width < 1) or (Src.Height < 1) or (Dst.Width < 1) or (Dst.Height < 1) then Exit; if proportional then SetProportional(Dst, Src.BoundsRect); case Quality of 3: begin R3 := TKernelResampler.Create(Src); R3.Kernel := TLanczosKernel.Create; end; 2: begin R2 := TLinearResampler.Create(Src); end; 1: begin R1 := TDraftResampler.Create(Src); end; 0: begin R0 := TNearestResampler.Create(Src); end; end; Dst.Draw(Dst.BoundsRect, Src.BoundsRect, Src); end; end. |
AW: Bildbearbeitung mit Delphi
quick & dirty
Delphi-Quellcode:
image1.Width := 30;
image1.Height := 30; Image1.Canvas.StretchDraw(Rect(0, 0, 30, 30), image2.Picture.bitmap); image1.Width := 300; image1.Height := 300; image1.Stretch := true; |
AW: Bildbearbeitung mit Delphi
@freeway: so einfach O.o
Also das funktioniert nun, vielleicht weiß noch jemand, wie man das auf JPEGs und PNGs erweitern kann? funktioniert gerade nur mit BMPs |
AW: Bildbearbeitung mit Delphi
Delphi-Quellcode:
procedure JPEGtoBMP(const FileName: TFileName);
var jpeg : TJPEGImage; bmp : TBitmap; begin jpeg := TJPEGImage.Create; try jpeg.CompressionQuality := 100; {Default Value} jpeg.LoadFromFile(FileName); image1.Assign(jpeg); finally jpeg.Free end; end; annsonsten Dieses Forum durchsuchen png als stichwort |
AW: Bildbearbeitung mit Delphi
Wie ist es hiermit?
|
AW: Bildbearbeitung mit Delphi
@DeddyH: Bei deinem code bekomme ich in folgender Zeile
Delphi-Quellcode:
einen Error:
Assert(Assigned(src) and Assigned(dest));
Code:
Erste Gelegenheit für Exception bei $759DB727. Exception-Klasse EAssertionFailed mit Meldung 'Assertion fehlgeschlagen ([i]pfad[/i], Zeile 41)'. Prozess Project1.exe (2320)
|
AW: Bildbearbeitung mit Delphi
Hast Du denn auch eine Quell- und eine Zielgrafik übergeben (beide müssen bereits erzeugt worden sein)?
|
AW: Bildbearbeitung mit Delphi
Ich mache das so:
Delphi-Quellcode:
Wobei Image2 leer ist
StretchGraphic(Image1.Picture.Graphic,Image2.Picture.Graphic,30,30,False);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:09 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