1

VarBinary事前に保存されたイメージを SQL Server CE列から にロードしようとしていますPictureBox

列の内容は、varbinary形式で保存されたビットマップ イメージです。

MemoryStream ms = new MemoryStream();
byte[] outbyte = new byte[100];
Int32 ordinal = 0;

conn.Open();
SqlCeDataReader reader = cmd.ExecuteReader();

while (reader.Read())
{
     ordinal = reader.GetOrdinal("FaceStamp");//FaceStamp: VarBinary column storing Bmp.
     outbyte = (byte[])reader[ordinal];
     ms.Write(outbyte, 0, outbyte.Length);
     ms.Seek(0, SeekOrigin.Begin);
     pictureBox1.Image = Image.FromStream(ms);
}          

conn.Close();

// Code below is the code I used to save the Bitmap image to the database
Bitmap bmi = cam.GetBitmap(); // Capture image from webcam which I've tested working.
ImageConverter converter = new ImageConverter();
byte[] byteArray = new byte[0];
byteArray = (byte[])converter.ConvertTo(bmi, typeof(byte[])); 
insert.Parameters.AddWithValue("@image", byteArray);
insert.ExecuteNonQuery();

次の行でエラーが発生します。

pictureBox1.Image = Image.FromStream(ms);

言って

{"パラメータが無効です。"}

任意のヒント?

ありがとうございました。

4

1 に答える 1

0

バイト配列として保存された画像を変換するときは、通常、次のことを行います。

byte[] outbyte = (byte[])reader[ordinal];
using (MemoryStream ms = new MemoryStream(outbyte))
{
    Bitmap image = new Bitmap(ms);
    pictureBox1.Image = image;
}

元の画像をバイト配列に変換するには、この SO questionをご覧ください。

于 2013-08-27T14:22:54.063 に答える