![]() |
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. |
Re: Bilder schneiden
Guck dir mal die Funktion TBitmap.Canvas.CopyRect an, die macht genau das, was du willst.
|
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] |
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. |
Re: Bilder schneiden / zuschneiden
Für CopyRect():
Delphi-Quellcode:
Für BitBlt():
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;
Delphi-Quellcode:
BitBlt() arbeitet schneller als CopyRect, da es direkt an die Windows-Bibliothek geleitet wird (CopyRect nimmt noch einen Umweg durch die Delphi-Library ^^).
begin
Windows.BitBlt(image1.Canvas.Handle, x, y, breite, hoehe, image2.Canvas.Handle, x, y, SRCCOPY); end; |
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?
![]() |
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:
Gruß
Bitmap.Assign(JpegImage);
Jürgen |
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? |
Re: Bilder schneiden / zuschneiden
das müsste so gehen:
Delphi-Quellcode:
Gruß
{ Breite des Bildes (nicht von Image1) }
PicWidth:= Image1.Picture.Width; { speichern } Image1.Picture.SaveToFile('Dateiname.bmp') Jürgen |
Re: Bilder schneiden / zuschneiden
danke, werds testen, die erste frage hat sich auch erledigt.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:48 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 by Thomas Breitkreuz