Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
fromfile と filestream について
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30504#CommentId84034
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
魔界の仮面弁士
 (社会人)
投稿日時
2020/6/5 08:13:12
> 確かに、ストリーム.close をしなければエラーは出なくなりました
先に述べた理由があるため、元のストリームを閉じてはいけません。
特に、アニメーション GIF やマルチページ TIFF の場合、元ストリームが閉じていると、
PictureBox に表示させたタイミングや、SelectActiveFrame の呼び出しなどによって
エラーが引き起こされることがあります。
> ただ、画像を読み込む、あとで書き込む ということをするために
> ストリーム.close をしないと書き込めませんので
閉じるべきは「ストリーム」であって、「ファイル」ではありませんよ。
FileStream のかわりに MemoryStream を使うようにしてみてください。
たとえば、元ファイルを Byte 配列として読み込まれてすぐに閉じておき、
それを MemoryStream に引き渡すようにします。
Dim
ms
As
New
MemoryStream(File.ReadAllBytes(ファイルパス))
これならば、元のファイルを長期間ロックすることなく、Image.FromStream 用のストリームを調達することが出来るかと思います。
ただしこの方法をとる場合も、Image.FromStream した後は、Image が解放されるまで
ms.Dispose() しないようにします。(Image が Dispose されれば、元リソースも処分されるので
どちらにしてもストリームを明示的に処分する必要はありません)