2009-03-19 32 views
3

ASP.NET(2.0)を使用して自分の画像をSQL Serverデータベースに保存します。画像がデータベースに保存されるときの画像の高さと幅の取得

(画像データ - >画像()のimageType - > VARCHAR)(imageLength - > BIGINT)

したがって画像データには、 "バイナリデータ" であろうとのimageTypeは "画像/ GIF" とimageLength意志のようになります"6458"のように.......

私のASP.NET内のVB.NETコードからHEIGHTとWIDTHを取得することはできますか? データベースに保存されている実際のイメージのサイズと同じように、自分のWebフォーム上に自分の写真ボックスを作成したいと思います。あなたのデータベース、高さと幅の2つの以上のフィールドをしたいよう

よろしく エティエンヌ

答えて

9

安くなる。

編集

私たちは電子メールにこれを取る場合は、この問題を持つ隣の男は、当社のソリューションの記録を持っていません。今のところフォーラムに残しましょう。

私はC#開発者ですので、問題がある場合はvb.netの構文を覚えておいてください。

あなたはIDataReaderを持っていますあなたのDBからImageまたはバイナリvarbinaryなどのフィールドを取得していると仮定しています。 System.IO.Streamから派生したオブジェクトにロードする必要があります。私たちの目的のために、MemoryStreamはディスクのようなバッキングストアを必要としないので、完璧な選択です。

System.IO.MemoryStream yourStream = new System.IO.MemoryStream(dr["imgLength"] as byte[]); 
System.Drawing.Image yourImage=System.Drawing.Image.FromStream(yourStream); 

yourImage.Height; 
yourImage.width 
+0

聞いてうれしいよ!がんばろう – JoshBerke

0

が鳴ります。

+0

私のバイナリデータからすべてのデータを取得できますか? – Etienne

+0

画像を再構成する場合は、その上に高さと幅の属性があります。私はそうは思わなかった。 –

2

イメージをデータベースに保存すると、イメージの高さと幅が別々の列に保存されます。データベースからイメージを読み取るためにselect文を実行すると、データベースからheightフィールドとwidthフィールドにアクセスすることもできます。

また、画像をデータベースから読み込んだ後、高さと幅のプロパティを設定してから画像を画像ボックスに割り当てることができます。

System.Drawing.Image.FromStream(yourStream).Height

私がイメージオブジェクトをロードすることはないことを確信しているとして、あなたは、DBに画像を保存するときは、proballyよりよくこれをやっている:あなたは、ストリーム内のデータを持っていると仮定すると

2

あなたは、高さと幅を取得することができますが、system.drawing.imageライブラリ、あなたがその情報を必要とするたびに使用してメモリに画像全体をロードする必要があるとしています。

最初にデータベースに保存するときに別のフィールドとして保存する方が良いです。これは一般に私が行うことです。

0

私は、数百ギガバイトのイメージの後に、ファイルシステムと静的ファイルhttpサーバが画像を保存するデータベースよりも適していると思っていると強く信じています。また、数千の既存のフリーツールを使用して、画像の操作、移動、ホストなどを行うこともできます。データベースがビジー状態になる可能性があり、クラスタ化するのは容易ではありません。

0
Dim mobj_wc As New System.Net.WebClient 
Dim obj_BookOriginalImage As System.Drawing.Bitmap 
Dim ImageInBytes() As Byte = mobj_wc.DownloadData(mstr_BookURL & mds_BookDetails.Tables(0).Rows(0).Item("BookImage")) 

'CREATE A MEMORY STREAM USING THE BYTES 
Dim ImageStream As New IO.MemoryStream(ImageInBytes) 
obj_BookOriginalImage = New System.Drawing.Bitmap(ImageStream) 
mint_ImageWidth = obj_BookOriginalImage.Width 
関連する問題