Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Bildbereich ausschneiden (https://www.delphipraxis.net/63582-bildbereich-ausschneiden.html)

Hawkeye219 13. Apr 2006 07:49

Re: Bildbereich ausschneiden
 
Hallo,

es sollte auch mit CopyRect ohne temporäre Bitmap funktionieren:

Delphi-Quellcode:
procedure TForm.CutImage;
  var lBMP : TBitmap;
begin
  // Bitmap erzeugen
  lBMP := TBitmap.Create;
  try
    // Originalbild laden
    lBMP.LoadFromFile('C:\WINDOWS\Kaffeetasse.bmp');
    // Mittleren Teil nach (0,0) kopieren
    lBMP.Canvas.CopyRect(Rect(0, 0, 64, 64), lBMP.Canvas, Rect(32, 32, 96, 96));
    // Bild auf die gewünschte Zielgröße beschneiden
    lBMP.Width := 64;
    lBMP.Height := 64;
    // Bild speichern
    lBMP.SaveToFile ('E:\Tasse.bmp');
  finally
    // Bitmap freigeben
    lBMP.Free;
  end;
end;
Gruß Hawkeye

DocZenith 13. Apr 2006 08:23

Re: Bildbereich ausschneiden
 
ok, erst mal danke für eure Hilfestellungen!
...Nun hab ich ein weiteres Problem, ich möchte 2 bildbereiche (2 senkrechte streifen) aus einem bild ausschneiden,
und die in einer neuen bitmap variable als 1 bild zusammensetzen.

Luckie 13. Apr 2006 08:24

Re: Bildbereich ausschneiden
 
Geht doch genauso. Wenn du das bisherige verstanden hast, sollte es kein Problem sein es umzusetzen.

DocZenith 13. Apr 2006 09:01

Re: Bildbereich ausschneiden
 
hier mein code, er setzt die zwei bilder nicht in dem bitmap objekt videoimage zusammen.

Delphi-Quellcode:
  SourceBitmap := videoimage;

  TargetBitmap.Width := 30;
  TargetBitmap.Height:= 150;

  TargetBitmap2.Width := 30;
  TargetBitmap2.Height:= 150;

// Ausschneiden des ersten Bildbereichs
  BitBlt(TargetBitmap.Canvas.Handle,0,0,30,150, SourceBitmap.Canvas.Handle, 330, 300, SRCCOPY);

// Originalbild neu laden
  sourcebitmap := videoimage;

//Ausschneiden des zweiten Bildbereichs
  BitBlt(TargetBitmap2.Canvas.Handle,0,0,30,150, SourceBitmap.Canvas.Handle, 360, 300, SRCCOPY);

// Zur Überprüfung beide Objekte darstellen
  paintbox1.Canvas.Draw(0,0,TargetBitmap);
  paintbox2.Canvas.Draw(0,0,TargetBitmap2);

//Beide Objekte zu einem Bitmapobjekt zusammensetzen
  for y := 0 to 150 do
  begin
    for x := 0 to 29 do
    begin
    videoimage.Canvas.Pixels[x,y] := TargetBitmap.Canvas.Pixels[x,y];
    end;
    for x := 31 to 59 do
  begin
    videoimage.Canvas.Pixels[x,y] := TargetBitmap2.Canvas.Pixels[x,y];
  end;
  end;

  videoimage.Width := 62;
  videoimage.Height:= 150;

DocZenith 13. Apr 2006 09:11

Re: Bildbereich ausschneiden
 
ok, stop, hat sich erledigt. hab mein problem gelöst.

DocZenith 13. Apr 2006 09:15

Re: Bildbereich ausschneiden
 
hier noch der code

Delphi-Quellcode:
  BitBlt(videoimage.Canvas.Handle,0,0,29,150, SourceBitmap.Canvas.Handle, 330, 300, SRCCOPY);
  BitBlt(videoimage.Canvas.Handle,31,0,60,150, SourceBitmap.Canvas.Handle, 430, 300, SRCCOPY);


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:32 Uhr.
Seite 2 von 2     12   

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