2017-04-05 5 views
3

TPNGImageオブジェクトのSaveToFileメソッドを呼び出そうとすると、Acces Violation Errorが発生します。.png保存時のアクセス違反

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

メソッド呼び出し:私はTImageのに割り当てることができますので、pngTest.SaveToFile('testtttt.png');

PNGオブジェクトが正しく作成され、それが動作します。

答えて

3

これはDelphi PNGライブラリコードの不具合です。それをEmbarcaderoに報告してください。

16ビットの色深度の使用によって欠陥が引き起こされたようです。 8ビットカラーを使用するようにコードを切り替えると、コードは正常に実行されます。

簡単な回避策はありません。したがって、16ビットカラーを続行する場合は、別のPNGライブラリを見つける必要があります。 MicrosoftのWindows Imaging Componentライブラリが正しく機能することが期待されます。あるいは、Graphics32をGR32PNGエクステンションと見なすこともできます。

+0

16ビットのグレースケールイメージを保存するための「標準」な方法はありますか? – meller92

+0

それは悲しそうに見えません –

+0

単にTPngImageにTWicImageを割り当てることはできますか?私がそれをしようとすると例外が発生する "Can not Assign ..." – meller92