[Erledigt] External SIGSEGV bei Image.Canvas.CopyRect

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...

[Erledigt] External SIGSEGV bei Image.Canvas.CopyRect

Beitragvon Swirl » 25. Feb 2019, 15:36 [Erledigt] External SIGSEGV bei Image.Canvas.CopyRect

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 26. Feb 2019, 12:46, insgesamt 2-mal geändert.
Kubuntu 18.10 - Lazarus 1.8.4
Win7/10 Pro 64bit - Lazarus 2.0.0
Swirl
 
Beiträge: 23
Registriert: 7. Aug 2015, 13:05
Wohnort: Schwerte
CPU-Target: x86_64
Nach oben

Beitragvon theo » 25. Feb 2019, 16:28 Re: External SIGSEGV bei Image.Canvas.CopyRect

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;
theo
 
Beiträge: 8146
Registriert: 11. Sep 2006, 18:01

Beitragvon Swirl » 25. Feb 2019, 17:16 Re: [solved] External SIGSEGV bei Image.Canvas.CopyRect

wie heißt es im englischsprachigen Forum immer:
"works like a charm"...
Danke Theo
Kubuntu 18.10 - Lazarus 1.8.4
Win7/10 Pro 64bit - Lazarus 2.0.0
Swirl
 
Beiträge: 23
Registriert: 7. Aug 2015, 13:05
Wohnort: Schwerte
CPU-Target: x86_64
Nach oben

• Themenende •

Zurück zu Multimedia



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

cron
porpoises-institution
accuracy-worried