|
分類:[VB.NET/VB2005 以降]
使用言語:VB2008
OS:Windows7
マルチtiff画像を分解してgifファイルに変換しようと試みています。
色々と調べた結果、以下の方法でtiffファイルの各ページを分解してBitmap形式のデータを
取り込むことはできたのですが、これを保存(Save)する際に
「GDI+ で汎用エラーが発生しました」という例外が発生します。
Private Sub SaveImages(ByVal tifFile As String)
'tifFileはTiffファイルのフルパス
Using fs As New FileStream(tifFile, FileMode.Open, FileAccess.Read, FileShare.Read)
Dim bmd As BitmapDecoder = BitmapDecoder.Create(fs, _
BitmapCreateOptions.PreservePixelFormat, _
BitmapCacheOption.Default)
For intIdx As Integer = 0 To bmd.Frames.Count - 1
Dim bmf As BitmapFrame = bmd.Frames(intIdx)
Dim savePath As String = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), _
"img_" & intIdx.ToString & ".gif")
Using bmp As Bitmap = ConvertBitmapFrameToBitmap(bmf)
bmp.Save(savePath, Imaging.ImageFormat.Gif) '←ここで例外発生
End Using
Next
End Using
MsgBox("終了")
End Sub
Private Function ConvertBitmapFrameToBitmap(ByVal bmf As BitmapFrame) As Bitmap
Dim enc As New BmpBitmapEncoder()
enc.Frames.Add(bmf)
Using ms As New MemoryStream
enc.Save(ms)
Return Bitmap.FromStream(ms)
End Using
End Function
なお、ファイル保存用の変数savePathは適切(含まれているフォルダは存在する)であることを確認しております。
(例えば別のgifファイルをこの名前で保存できることを確認しました。)
また、
Using bmp As Bitmap 〜
の部分を
Dim bmp As Bitmap 〜
に変更し、この内容をPictureBoxのImageプロパティに設定すると、問題なく画像が表示されます。
ただし、このBitmap変数に対してSaveを行おうとすると、同様の例外が出ます。
この例外の原因として考えられることは何でしょうか?
よろしくお願いします。
|