Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Bildbearbeitung mit Delphi (https://www.delphipraxis.net/160873-bildbearbeitung-mit-delphi.html)

zeras 6. Jun 2011 19:11

AW: Bildbearbeitung mit Delphi
 
Zitat:

Zitat von Muellermilchtrinker (Beitrag 1104890)
Mein Problem ist nur, dass Bild zu verkleinern und nachher ein neues Bild zu erstellen, anhand der neuen Pixelfarbe.

Mach doch erst Stretchbit, wie oben beschrieben. Dann hast du die Größe und kannst mit den Farben machen was du willst.

Muellermilchtrinker 9. Jun 2011 18:10

AW: Bildbearbeitung mit Delphi
 
Also ich häng nun doch beim verkleinern.
Ich nutze folgenden Code:
Delphi-Quellcode:
  Image2.Canvas.StretchDraw(Rect(0,
                               0,
                               30,
                               30),
                               image1.Picture.bitmap);
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

Jens01 9. Jun 2011 18:34

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.

freeway 9. Jun 2011 19:16

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;

Muellermilchtrinker 9. Jun 2011 19:31

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

freeway 9. Jun 2011 21:24

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

DeddyH 10. Jun 2011 07:21

AW: Bildbearbeitung mit Delphi
 
Wie ist es hiermit?

Muellermilchtrinker 10. Jun 2011 18:28

AW: Bildbearbeitung mit Delphi
 
@DeddyH: Bei deinem code bekomme ich in folgender Zeile
Delphi-Quellcode:
  Assert(Assigned(src) and Assigned(dest));
einen Error:
Code:
Erste Gelegenheit für Exception bei $759DB727. Exception-Klasse EAssertionFailed mit Meldung 'Assertion fehlgeschlagen ([i]pfad[/i], Zeile 41)'. Prozess Project1.exe (2320)

DeddyH 10. Jun 2011 18:41

AW: Bildbearbeitung mit Delphi
 
Hast Du denn auch eine Quell- und eine Zielgrafik übergeben (beide müssen bereits erzeugt worden sein)?

Muellermilchtrinker 10. Jun 2011 18:49

AW: Bildbearbeitung mit Delphi
 
Ich mache das so:
Delphi-Quellcode:
StretchGraphic(Image1.Picture.Graphic,Image2.Picture.Graphic,30,30,False);
Wobei Image2 leer ist


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:09 Uhr.
Seite 2 von 4     12 34      

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