GDI+の微妙さは絶妙

Image.FromFile()で画像ファイルを読むとロックがかかるんですね。で、回避方法としてImage.FromStream()で読むという方法があるのですがそれだと保存時にエラーが出るらしく、その回避方法としてImage.FromHBitmap(new Bitmap(new FileStream()).GetHBitmap())という方法があるそうです。
http://blog.kaburk.com/lang/csharp-filestream-save.html


こ・・・これは・・・どこかで見たような・・・・*A*Aの呪いか!


ちなみにGDIオブジェクトはきちんとDispose()してやらないとどんどんメモリがリークしてしまうので、id:furukatsuが声を張り上げて主張していた「自分でfreeできない言語など気持ち悪くて触れない! mallocとfree万歳!万歳!」のような人にはおぬぬめですが私は嫌です。楽がしたいです。


あと、そのままではPNGのα値が正しく反映されません。そのへんもきっちりやってもよかったんだけどめんどくさいからやっていない。ImageオブジェクトをきちんとDispose()してnull代入してGC.Collect()してやれば(そこまで徹底的にしなくてもいいけど)ファイルのロックはちゃんと解除されるんだよね。