DOBON.NET DOBON.NETプログラミング掲示板過去ログ

マルチTIFFに含まれるすべてのイメージが表示できない

分類:[.NET]

マルチドキュメントTIFFの内容を取得したいのですが、
tipsにあるコードを実行したところ、

img.SelectActiveFrame(fd, i)の行で
「GDI+ で汎用エラーが発生しました。」
というエラーが発生してしまいます。

fd_countは2が入っていて、一枚目のTIFFは表示されるのですが、
2枚目をActiveにしようとしたときにエラーになるようです。
どうすればよいでしょうか

環境:VB2005

***参考ソース

'画像ファイルのパス
Dim filePath As String = Me.TextBox1.Text

Dim g As Graphics = PictureBox1.CreateGraphics()

'画像を読み込む
Dim img As Image = Image.FromFile(filePath)
'FrameDimensionを取得
Dim fd As New Imaging.FrameDimension(img.FrameDimensionsList(0))
'フレーム数を取得
Dim fd_count As Integer = img.GetFrameCount(fd)
Dim y As Integer = 0
Dim i As Integer
For i = 0 To fd_count - 1
'フレームを選択
img.SelectActiveFrame(fd, i)
'画像を表示
g.DrawImage(img, 0, y, img.Width, img.Height)
y += img.Height
Next i

img.Dispose()
g.Dispose()
GDI+が扱えないTIFF形式である可能性があります。Windows XPのWindows PictureやFax ViewerはGDI+を使用しているらしいので、これらを使って表示できない画像はGDI+で扱えないと判断できるようです。

Windows 画像と FAX ビューアを使用すると TIFF イメージが表示されない
http://support.microsoft.com/kb/329270/

JPEG 形式で圧縮されている TIFF 画像ファイルを Office 2003 の Office Document Imaging ツールで正しく開くことができない
http://support.microsoft.com/kb/885938/
返信ありがとうございます。

> GDI+が扱えないTIFF形式である可能性があります。Windows XPのWindows PictureやFax ViewerはGDI+を使用しているらしいので、これらを使って表示できない画像はGDI+で扱えないと判断できるようです。

VB2005上でGDI+で扱える形式に変換するということはできるのでしょうか。
それとも他のツールを使って扱える形式に変換するという方法しかないのでしょうか。
> VB2005上でGDI+で扱える形式に変換するということはできるのでしょうか。
> それとも他のツールを使って扱える形式に変換するという方法しかないのでしょうか。

GDI+で扱えない形式の画像を.NET Frameworkの機能で変換するということは常識的に考えて無理でしょう。それ以外の方法も私は知りません。

このようなご質問をされるということは、私の指摘が正しかったということだとは思いますが、実際どうだったのか、明確に教えていただけませんか?気になりますので...。
> このようなご質問をされるということは、私の指摘が正しかったということだとは思いますが、実際どうだったのか、明確に教えていただけませんか?気になりますので...。

度々申し訳ありません。

問題のTIFFファイルはOffice 2003 の Office Document Imaging では
開くことは可能です。
一度Office Document Imagingで開いた後、[ツール]−[オプション]−[圧縮]タブの[TIFF カラー圧縮]で、[無損失圧縮 (LZW)を行う]のチェックをオンにして
上書き保存したら、.NET Frameworkの機能で表示できました。

Office Document Imagingで表示できているので、何か変換方法がないか、
またはロジックに問題があるのではと思い、返信した次第です。
すみません。

DOBON.NET | プログラミング道 | プログラミング掲示板