2017-04-05 4 views
3

Wenn ich versuche, SaveToFile-Methode auf TPNGImage-Objekt aufzurufen, erhalte ich Acces Violation Error.Zugriffsverletzung beim Speichern von .png

PNG Konstruktion: pngTest:=TPngImage.CreateBlank(COLOR_GRAYSCALE, 16, 2048, 2048);

Methodenaufruf: pngTest.SaveToFile('testtttt.png');

PNG Objekt korrekt erstellt, weil ich es zu TImage zuweisen kann und es funktioniert.

Antwort

3

Dies ist ein Fehler im Delphi PNG-Bibliothekscode. Bitte melden Sie es Embarcadero.

Der Fehler scheint durch die Verwendung von 16 Bit Farbtiefe ausgelöst werden. Wenn Sie den Code auf 8-Bit-Farbe umstellen, wird der Code erfolgreich ausgeführt.

Es gibt keine einfache Problemumgehung. Daher müssen Sie eine andere PNG-Bibliothek finden, wenn Sie mit 16-Bit-Farbe fortfahren möchten. Ich würde erwarten, dass Microsoft Windows Imaging Component-Bibliothek ordnungsgemäß funktioniert. Oder Sie betrachten Graphics32 mit der Erweiterung GR32PNG.

+0

Gibt es eine "out of box" Möglichkeit, 16-Bit-Graustufenbild zu speichern? – meller92

+0

Es sieht nicht so aus, leider –

+0

Kann ich einfach TPnmImage zu TWicImage zuweisen? Wenn ich es versuche, bekomme ich die Ausnahme "Kann nicht zuweisen ..." – meller92

Verwandte Themen