[Erledigt] External SIGSEGV bei Image.Canvas.CopyRect

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
Antworten
Benutzeravatar
Swirl
Beiträge: 93
Registriert: Fr 7. Aug 2015, 14:05
OS, Lazarus, FPC: Win 10/11/ Mint 21.3 / Lazarus 30 / FPC 3.2.2
CPU-Target: x86_64, ARM Cort.-A7
Wohnort: Schwerte NRW

[Erledigt] External SIGSEGV bei Image.Canvas.CopyRect

Beitrag von Swirl »

Hallo,

möchte den linken Anteil eines Bildes speichern, erhalte aber bei der Zuweisung(?) per CopyRect die folgende Exception:
Projekt SplitImage hat Exception-Klasse »External: SIGSEGV« ausgelöst. In Datei 'include/wincontrol.inc' in Zeile 7384

Den Fehler-erzeugenden Anteil habe ich in Sternchen gesetzt. Komme durch Suche im Web leider nicht weiter.
Falls das für mein Problem relevant sein sollte - ich bin hier in Linux unterwegs.

uses
Classes, SysUtils, Forms, StdCtrls, ExtCtrls, Graphics;
...
procedure TForm1.Button1Click(Sender: TObject);
var
MeinBild, MeinBildAnteilLinks: TImage;
begin
MeinBild := TImage.Create(nil);
MeinBildAnteilLinks := TImage.Create(nil);
MeinBild.Picture.LoadFromFile('/home/swir/Schreibtisch/Projekte/Lazarus/SplitImage/Bild.png');
MeinBildAnteilLinks.SetInitialBounds(0,0,1919,1019);
MeinBildAnteilLinks.Canvas.CopyMode := cmSrcCopy;
// **********************************************************************************************************************
MeinBildAnteilLinks.Canvas.CopyRect(Rect(0,0,1919,1079), MeinBild.Canvas, Rect(0,0,1919,1079));
// **********************************************************************************************************************
MeinBildAnteilLinks.Picture.SaveToFile('/home/swir/Downloads/Bild_links.png');
MeinBild.Free;
MeinBildAnteilLinks.Free;
end;


Ich könnte das Teilen/Zerschneiden eines Bildes z.B. mittels Krita in zwei Schritten erledigen.
Mir geht es hier in erster Linie um das Verständnis der Bildbearbeitung „per Lazarus“.

Gruß,
Michael
Zuletzt geändert von Swirl am Di 26. Feb 2019, 12:46, insgesamt 2-mal geändert.
=> Mint 21.3 “Virginia” - Win 10/11 - Lazarus 3.0 - FPC 3.2.2

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: External SIGSEGV bei Image.Canvas.CopyRect

Beitrag von theo »

Würde ich z.B. so machen:

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
var
MeinBild, MeinBildAnteilLinks: TPortableNetworkGraphic;
begin
MeinBild := TPortableNetworkGraphic.Create;
MeinBildAnteilLinks := TPortableNetworkGraphic.Create;
MeinBild.LoadFromFile('/home/theo/Bilder/exp_uegeb.png');
MeinBildAnteilLinks.SetSize(MeinBild.Width-100,MeinBild.Height-100);
MeinBildAnteilLinks.Canvas.CopyRect(Rect(0,0,MeinBild.Width-100,MeinBild.Height-100), MeinBild.Canvas, Rect(0,0,MeinBild.Width,MeinBild.Height));
MeinBildAnteilLinks.SaveToFile('/home/theo/Bilder/Bild_links.png');
MeinBild.Free;
MeinBildAnteilLinks.Free;
end;

Benutzeravatar
Swirl
Beiträge: 93
Registriert: Fr 7. Aug 2015, 14:05
OS, Lazarus, FPC: Win 10/11/ Mint 21.3 / Lazarus 30 / FPC 3.2.2
CPU-Target: x86_64, ARM Cort.-A7
Wohnort: Schwerte NRW

Re: [solved] External SIGSEGV bei Image.Canvas.CopyRect

Beitrag von Swirl »

wie heißt es im englischsprachigen Forum immer:
"works like a charm"...
Danke Theo
=> Mint 21.3 “Virginia” - Win 10/11 - Lazarus 3.0 - FPC 3.2.2

Antworten