Paint.NET では、デフォルトでPSDファイルを読み込むことは出来ない。
しかし、プラグインを導入することで様々な形式のフォーマットに対応することが出来る。
プラグインは自分で作ることもできるし、フリーで公開されているプラグインを使用することも出来る。
そこで公開されているPSDファイル読み込み用のプラグインを導入してみた。
大抵のPSDファイルは正常に読み込むことができ、編集も出来た。
しかし、一部のファイルで読み込み中に「メモリ不足のためイメージを読み込めません。」というエラーが発生した。
エラーの原因を調べてみると、どうやら Paint.NET はレイヤー毎に全てのピクセル情報を内部で持っているらしく
レイヤーの数を60, サイズを2000x3000の画像ファイルを読み込もうとすると以下の計算になる。
2000 * 3000 * 4(RGBA) * 60(layer) ≒ 1.34GByte
つまり、このようなPSDファイル1つを開くだけで約1.34GByteものメモリを食いつぶすことになる。
実際にはもう少しレイヤーの数が多いPSDファイルを読み込もうとしていたため、プロセス単位で扱えるメモリを全て使い果たし
結果読み込みエラーが発生したと推測する。
各レイヤーにおいて、透明色以外で塗ってあるピクセルの情報のみをメモリに保持しておく機構にすれば、かなりのメモリ節約になると思うのだが、なぜかそうはしていない模様。
※上記エラーはPSDファイルが原因ではなく、コアの実装に依存しているので別フォーマット読み込みでも発生する