@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

ASP.NETの画像表示

1
投稿者投稿内容
川上
常連さん
会議室デビュー日: 2006/08/18
投稿数: 20
お住まい・勤務地: 東京
投稿日時: 2008-12-10 12:44

いつもお世話になっております。

WinAPで画像ファイルを取り込んで、SQL2005に保存し
WebAPでSQL2005の画像データから画像を表示するプログラムを作成しました。

(画像を単純に表示する(バイナリ出力する)ASPXを作成しました)

ページ内に、<img src="ImageOutput.aspx" /> と記述すると
ページ内の指定した位置に該当する画像が表示されるのですが、
その画像の拡大表示(タグを使わないでページとして表示)しようとすると
画像ファイルによって表示できる/表示できない問題に直面しました。

画像ファイルのプロパティを調べてみると、
解像度の単位に差異がありました。
(解像度の単位=未設定→正常に表示 解像度の単位=2→正常に表示できない)

この辺の問題で、なにかご指南を頂けますと非常に助かります。


環境は、Vista, VS2005-ASP.NET(VB), SQL Server 2005 で開発を行ってます。

ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2008-12-10 13:06
引用:

川上さんの書き込み (2008-12-10 12:44) より:

いつもお世話になっております。

WinAPで画像ファイルを取り込んで、SQL2005に保存し
WebAPでSQL2005の画像データから画像を表示するプログラムを作成しました。

(画像を単純に表示する(バイナリ出力する)ASPXを作成しました)

ページ内に、<img src="ImageOutput.aspx" /> と記述すると
ページ内の指定した位置に該当する画像が表示されるのですが、
その画像の拡大表示(タグを使わないでページとして表示)しようとすると
画像ファイルによって表示できる/表示できない問題に直面しました。

画像ファイルのプロパティを調べてみると、
解像度の単位に差異がありました。
(解像度の単位=未設定→正常に表示 解像度の単位=2→正常に表示できない)

この辺の問題で、なにかご指南を頂けますと非常に助かります。


環境は、Vista, VS2005-ASP.NET(VB), SQL Server 2005 で開発を行ってます。



質問云々ではなく、一般的な内容としてですが、伝えたい内容が正しく
伝わっていないように思えます。

「タグを使わないでページとして表示」とは何か?
既存のページ内で img タグを使用して表示させるのではなく、ブラウザの
URL 欄に aspx ファイルの名前を書いて表示させることだと思いますが
そうであればそう正しく書かなければ理解されないと思います。
(これは私の仮説ですので、もしかしたら違うのかもしれませんし)

「画像ファイルのプロパティ」とは?
画像ファイルを右クリックしてプロパティを表示させることでしょうか。
これもそう書かなければいけないでしょう。

「解像度の単位」????
これは私もさっぱりわかりません。何を指しておられるのでしょうか。

ご自分は理解できていても、それが相手に伝わるとは限らないので
できるだけ相手に伝わる(相手が理解できる)文章を書かなくては
いけません。これは回答者はもちろんですが、質問者としても気をつけ
なければいけないことだと思います。
(言葉のやりとりをする以上当然のことです)
# WinAP とか WebAP とかの「オレオレ略語」もそうですけどね

とりあえず気になったところと言えば Response.ContentType プロパティ
には何を設定していますでしょうか。
この内容によっては、ブラウザがファイルの内容を正しく見てくれない
可能性があると思います。
_________________
ぽぴ王子@わんくま同盟
ぽぴ王子の人生プログラミング中 / ぽぴンち。
川上
常連さん
会議室デビュー日: 2006/08/18
投稿数: 20
お住まい・勤務地: 東京
投稿日時: 2008-12-10 13:53
ぽぴ王子 レス&ご指摘ありがとうございます。

ぽぴ王子のご指摘の通り、

「タグを使わないでページとして表示」は
既存のページ内で img タグを使用して表示させるのではなく、
ブラウザの URL 欄に aspx ファイルの名前を書いて表示させることです。

URL に aspx を書いて表示させると、「x」の表示だけされている状態で、
画像として認識されていない感じです。

Response.ContentType プロパティには、image/jpeg を設定してます。
(Response.ContentType = "image/jpeg")


また、「解像度の単位」ですが、
画像ファイルを右クリックしてプロパティ画面からの詳細タブの中にある
解像度の単位です。
※このプロパティは、Vistaは表示されますが XP は表示されないようです。

ファイル自体に問題があるのかと思い、
正常に表示できるファイルと正常に表示できないファイルのプロパティを
確認したところ、「解像度の単位」に差異があった事から記載させて頂きました。


補足ですが、
SQL Server の画像データ用項目は、image型で定義してまして
image型項目からバイナリ情報を取得して、Response.BinaryWrite(b_Array)で
出力しています。



伝わりにくい表現で申し訳ありませんが、よろしくお願いします。
よこけん
大ベテラン
会議室デビュー日: 2006/01/31
投稿数: 216
投稿日時: 2008-12-10 14:04
aspx 経由で参照できるかの検証の前に、まずは画像ファイルを直接参照 (もちろんブラウザで) できるかを検証してみてはいかがでしょうか?
_________________
C#と諸々
川上
常連さん
会議室デビュー日: 2006/08/18
投稿数: 20
お住まい・勤務地: 東京
投稿日時: 2008-12-10 14:54
よこけん様 レスありがとうございます。

> aspx 経由で参照できるかの検証の前に、まずは画像ファイルを直接参照
> (もちろんブラウザで) できるかを検証してみてはいかがでしょうか?

なんとビツクリです。。。 

IE7で画像ファイルを直接参照してみましたが、正常に表示されませんでした。(同じ現象)
Firefoxも同様に正常に表示されずに、「画像ファイルxxxは壊れているため、表示できませんでした」のエラーが表示されます。

Operaでは、問題なく表示できました。

そうすると、ASP.NETの問題ではなく、ブラウザの問題と言う事になりそうですね。
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2008-12-10 15:27
引用:

川上さんの書き込み (2008-12-10 13:53) より:

Response.ContentType プロパティには、image/jpeg を設定してます。
(Response.ContentType = "image/jpeg")


ありがとうございます。実はこのあたり、密かに疑っていました。
(未設定なのではないか?とか)
正しい値が設定されているようなので、問題はここではなさそうですね。

引用:

また、「解像度の単位」ですが、
画像ファイルを右クリックしてプロパティ画面からの詳細タブの中にある
解像度の単位です。
※このプロパティは、Vistaは表示されますが XP は表示されないようです。


これは失礼しました。自 PC は WindowsXP なので、表示されていなかった
ようです。

引用:

川上さんの書き込み (2008-12-10 14:54) より:
よこけん様 レスありがとうございます。

そうすると、ASP.NETの問題ではなく、ブラウザの問題と言う事になりそうですね。


このあたりを総合すると、ブラウザの問題…というか、ブラウザに出力して
いるデータに問題があるのかもしれません。
ブラウザに問題があるとすると、普通に画像を表示させたときも同様の問題が
出てきそうです。

ちょっと難しいかもしれませんが、パケットキャプチャソフトなどを使用して
単純にイメージファイルを表示した場合と、aspx ファイルとして表示した場合
の差異を比べてみてはどうでしょうか。
自分は Wireshark などを使用しています。
http://ja.wikipedia.org/wiki/Wireshark
_________________
ぽぴ王子@わんくま同盟
ぽぴ王子の人生プログラミング中 / ぽぴンち。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2008-12-10 18:13
バッファをクリアせずに書き出しているとか?
よこけん
大ベテラン
会議室デビュー日: 2006/01/31
投稿数: 216
投稿日時: 2008-12-10 22:13
3 点程お聞きします。

1. 画像のフォーマット (jpeg とか png とか) は何ですか? (正常な画像も同じフォーマットですか?)
2. Windows 付属のビューアやペイントで開けますか?
3. .NET Framework の System.Drawing.Image クラスの FromFile メソッドで読み込めますか?

_________________
C#と諸々
1

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