- PR -

WebフォームImageコントロールにTifの画像を表示させたい

投稿者投稿内容
hit
常連さん
会議室デビュー日: 2004/04/01
投稿数: 44
投稿日時: 2005-01-06 09:13
お世話になります。
WebフォームのImageコントロールを使用していますが、
もとになるイメージファイルがTifファイルです。

jpgなどのイメージファイルであれば、Imageコントロールが
使えることはわかったのですが、Tifファイルですと
うまく処理できません。

Tifファイルをjpgなどのファイルに変換する処理をプログラムで
行うべきなのか、それとも、何か別のコントロールを探さないといけないのか
困っています。

方法がありましたら教えてください。
よろしくお願いします。


burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2005-01-06 10:08
たしかtifには種類があって
一部しかブラウザ(IE)がサポートしていなかったと思います。
結局、ASP.NETはIMGタグを生成するにすぎないので、ファイル変換をする必要があると思います。
hit
常連さん
会議室デビュー日: 2004/04/01
投稿数: 44
投稿日時: 2005-01-06 13:44
ありがとうございます。
やはり、ファイル変換が必要ですか。
Tiffの画像をJpegに変換する方法を教えてもらえないでしょうか。
よろしくお願いします。

浮嶋
会議室デビュー日: 2004/01/08
投稿数: 14
投稿日時: 2005-01-06 14:08
禰宜と申します。

GDI+を利用する方法などもあるでしょうが、
下記のような方法でも可能かと思います。


#VB.NET
Dim pb As System.Drawing.Image
pb = System.Drawing.Image.FromFile("C:\TEST.TIFF")
pb.Save("C:\TEST.JPEG", System.Drawing.Imaging.ImageFormat.Jpeg)
pb.Dispose()
hit
常連さん
会議室デビュー日: 2004/04/01
投稿数: 44
投稿日時: 2005-01-06 14:33
ありがとうございます。
禰宜さんの方法で見事ファイルの変換ができました。

それで、さらに教えて欲しいのですが、

もとのTIFファイルのサイズがA2とかの場合だと、
ファイルの容量が大きいし、Web画面に表示される画像も大きすぎます。
サイズを指定(縮小)して変換することはできないでしょうか?

よろしくお願いします。
にしざき
ぬし
会議室デビュー日: 2003/06/30
投稿数: 304
投稿日時: 2005-01-06 14:36
http://www.atmarkit.co.jp/fdotnet/dotnettips/023resize/resize.html
浮嶋
会議室デビュー日: 2004/01/08
投稿数: 14
投稿日時: 2005-01-06 15:12
にしざき様 助け舟を出して頂きありがとうございます。

画質を無視してよいのであれば、

#VB.NET
Dim pb As System.Drawing.Bitmap
pb = System.Drawing.Bitmap.FromFile("C:\TEST.tiff")
Dim bm As Bitmap = New Bitmap(pb, pb.Width * 0.5, pb.Height * 0.5)
pb.Dispose()
bm.Save("C:\TEST.jpeg", System.Drawing.Imaging.ImageFormat.Jpeg)
bm.Dispose()

こんな感じになるでしょうか。
Bitmapオブジェクトコンストラクタの第2引数、第3引数でサイズを指定しています。

詳しくは、にしざき様のリンク先や
「Graphicsオブジェクト」
「Bitmapオブジェクト」
「Imageオブジェクト」
などのHELPを参照ください。




hit
常連さん
会議室デビュー日: 2004/04/01
投稿数: 44
投稿日時: 2005-01-06 15:15
にしざきさんありがとうございます。
教えて頂いたホームページを参考にして、コードを書いてみましたが、

A4サイズでは、やろうとすることはできたのですが、
もとの画像ファイルのサイズがA4を超える場合、
g.DrawImage(src, 0, 0, w, h)
のところで、異常に時間がかかり最終的にエラーになってしまいます。

この関数を実行する上で何か制限事項があるのでしょうか?
調べてみたのですが、わからなかったので、よろしくお願いします。

コードは、以下のとおりにして動作をチェックしました。

Dim wc As System.Net.WebClient = New System.Net.WebClient
Dim stream As System.IO.Stream = wc.OpenRead("C:\inetpub\wwwroot\test\TEST1.TIF")
Dim src As Bitmap = New Bitmap(stream)
stream.Close()

Dim w As Integer = src.Width / 10
Dim h As Integer = src.Height / 10

Dim dest As Bitmap = New Bitmap(w, h)
Dim g As Graphics = Graphics.FromImage(dest)

g.DrawImage(src, 0, 0, w, h)
dest.Save("C:\inetpub\wwwroot\test\TEST1.jpg", System.Drawing.Imaging.ImageFormat.Jpeg)

スキルアップ/キャリアアップ(JOB@IT)