1

私は現在Visual Studio 2008(VB.Net)とSQL Server 2008を使用しています。データベースに保存された画像はimageです。私のコードに取り込むときにはSystem.Byte[]で、System.Drawing.Imageとしてキャストできず、DevExpress(v10.2).XtraEditors.ImageEditに保存します。SQLデータベースのイメージをSystem.Drawing.Imageに変換する方法は?

私は

Dim imgStream As MemoryStream = New MemoryStream(image, 0, image.Length) 

または

Dim imgStream As MemoryStream = New MemoryStream(image) 

に試してみましたしかし、その後も私は私がしようとすると、「パラメータが有効ではありません」を取得としてimage.FromStream(imgStream)またはbitmap.FromStream(imgStream)を呼び出すことができません。

EDIT:私たちは、私はプログラムで画像を見ることができる前のプログラムを実行するとSQL 2000年にあった以前のシステムから更新する

。私が新しいものを実行すると、私が移行したイメージは「無効なパラメータ」ですが、データベースに追加した(プログラム上の入力による)イメージはすべて表示できます。古いデータベースと新しいデータベースからイメージをフェッチすると、まったく同じです。データの移行時に考慮すべきSQL 2000とSQL 2008の違いはありますか?

+2

データベースは画像の場所ではありません。より良いアプローチは、データベースに画像パスを格​​納することです。列型 'image'はイメージとは関係がありません。バイナリデータを保持できます。 – Dani

+0

ダニは100%正しいです。 –

+0

残念ながら、これは私が始める前から設定されています。プログラムは複数のコンピュータに配備されるため、誰でも自分のコンピュータ上に画像を持たず同じ経路を持たないため、画像にする必要があります。 – Kyra

答えて

1

はこれを試してみてください:

Dim MyConverter as ImageConverter = new System.Drawing.ImageConverter() 
Dim MyImage as Image = imageConverter.ConvertFrom(byteArray) 

ただし、このエラーは通常、入力データが無効であることを意味しています。バイト配列に有効なイメージデータが含まれていることを確認しますか?

+0

私は以前と同じエラーを受けました(パラメータは無効です)。以前のプログラムを更新し、データを転送しました。データベースの2つの画像を比較すると同じデータが得られ、古いプログラムのロゴが見えるので、入力データが有効だと思います。 – Kyra

関連する問題