Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Bilder schneiden / zuschneiden (https://www.delphipraxis.net/131026-bilder-schneiden-zuschneiden.html)

dutyfree 17. Mär 2009 17:51


Bilder schneiden / zuschneiden
 
Nabend,
ich bräuchte mal Hilfe:

Ich will ein kleines Tool schneiden was Bilder selbstständig zurecht schneidet.
Dafür muesste ich folgendes Wissen:

ich habe den Pfad zum Bild, ich habe die Aufloesung des Bildes, weiss wie groß der Ausschnit sein soll und an welcher Position (Pixel) und ich weiss an welchen Eckpunkten (Pixel) das Bild geschnitten werden soll. (Also ein Viereck).
Jetzt kommts zum groeßren und glaube ich auch sehr komplexen Problem. Ich weiss nicht wie ich das anstellen soll.

Gegoogelt habe ich schon. Es reicht mir halt nicht das Bild einfach zu verkleinern, sondern es soll an den Seiten ein Rand "abgeschnitten" werden.

Ja, wär schoen wenn ihr mir helfen koennt. Quellcode wäre naatürlich am schönste.

alleinherrscher 17. Mär 2009 17:53

Re: Bilder schneiden
 
Guck dir mal die Funktion TBitmap.Canvas.CopyRect an, die macht genau das, was du willst.

DeddyH 17. Mär 2009 17:54

Re: Bilder schneiden
 
Wenn ich das richtig verstanden habe, wäre TCanvas.CopyRect eine Lösung.

[edit] Damit das jetzt nicht ganz so blöde dasteht, werfe ich noch zusätzlich BitBlt() in den Raum. [/edit]

dutyfree 17. Mär 2009 17:56

Re: Bilder schneiden / zuschneiden
 
Yay, sau schnell. Danke, werds mir mal angucken.

Edit:

Könntet ihr das bitte nochmal für einen Anfänger etwas genauer erklären? :thumb:

Also ich hab jetzt ein TImage und im Code ein "image1.Canvas.CopyRect()" Was muss ich als Paramter eingeben?
Also gehen wir davon aus, ich hab ein Bild von von Pixel (20|30) soll zu (30|50) ein Rechteck erstellt werden und der Bereich ausgeschnitten werden.

Cicaro 18. Mär 2009 12:13

Re: Bilder schneiden / zuschneiden
 
Für CopyRect():
Delphi-Quellcode:
var
  von, nach: TRect;
begin
  von := Rect(x, y, x + breite, y + hoehe);
  nach := Rect(x, y, x + breite, y + hoehe);

  // von image2 auf image1 kopieren
  image1.Canvas.CopyRect(nach, image2.Canvas, von);
end;
Für BitBlt():
Delphi-Quellcode:
begin
  Windows.BitBlt(image1.Canvas.Handle, x, y, breite, hoehe, image2.Canvas.Handle, x, y, SRCCOPY);
end;
BitBlt() arbeitet schneller als CopyRect, da es direkt an die Windows-Bibliothek geleitet wird (CopyRect nimmt noch einen Umweg durch die Delphi-Library ^^).

dutyfree 28. Mär 2009 18:14

Re: Bilder schneiden / zuschneiden
 
Liste der Anhänge anzeigen (Anzahl: 1)
Danke, bekomm leider diese Fehlermeldung, wenn ich ein .jpg zurechtschneiden will. Wie kann ich das beheben?

http://www.abload.de/img/28-03-2009_19-12-27l4by.jpg

Pfoto 28. Mär 2009 18:35

Re: Bilder schneiden / zuschneiden
 
Hallo,

hast du das JPEG vorher in ein Bitmap umgewandelt?

Nach dem Laden des Jpegs das hier ausführen:
Delphi-Quellcode:
Bitmap.Assign(JpegImage);
Gruß
Jürgen

dutyfree 29. Mär 2009 12:50

Re: Bilder schneiden / zuschneiden
 
Ah.. jetzt gehts ;D
Hätte aber noch 2 probleme:

1. Wie kann ich die Größe eines BMP pder JPG Bildes ermitteln (Pixel)
2. Wenn ich ein Bild speicher, was ich in ein timage gezogen habe, wird auch nur der bereich gespeichert, der auch angezeigt wird. Kann man das ändern?

Pfoto 29. Mär 2009 13:27

Re: Bilder schneiden / zuschneiden
 
das müsste so gehen:
Delphi-Quellcode:
{ Breite des Bildes (nicht von Image1) }
PicWidth:= Image1.Picture.Width;
{ speichern }
Image1.Picture.SaveToFile('Dateiname.bmp')
Gruß
Jürgen

dutyfree 29. Mär 2009 13:45

Re: Bilder schneiden / zuschneiden
 
danke, werds testen, die erste frage hat sich auch erledigt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:50 Uhr.
Seite 1 von 2  1 2      

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