1

データベースとの間で画像をアップロードおよびダウンロードするプログラムを作成しましたSQL Server 2008 R2。以下のコードを使用して画像をアップロードします。

SqlParameter picparameter = new SqlParameter();

            picparameter.SqlDbType = System.Data.SqlDbType.Image;

        picparameter.ParameterName = "value";

        picparameter.Value = val;//val is a byte array

        SqlCommand sqlcommand = new SqlCommand("update " + table + " set " + col + " = @value "+" where "+where, sqlconnection);
        sqlcommand.Parameters.Add(picparameter);
        sqlcommand.ExecuteNonQuery();

PictureBox以下のコードを使用して、画像を から配列に変換します。

 public static byte[] ImageToByteArray(System.Drawing.Image img)
    {
        System.IO.MemoryStream ms = new System.IO.MemoryStream();
        Bitmap b = new Bitmap(img);
        b.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
        return ms.ToArray();
    }

次に、以下のコードを使用して、データベースからハードディスクに画像をダウンロードします。

Byte[] data = new Byte[0];
data = (Byte[])(imageReader["image"]);
MemoryStream mem = new MemoryStream(data);
Image.FromStream(mem).Save(Application.StartupPath + "\\Temp\\img\\" +imageReader["code"].ToString() + ".png",
System.Drawing.Imaging.ImageFormat.Png);

しかし、データベースからハードディスクに保存した後、画像の背景が黒くなるという大きな問題があります。

データベースにアップロードした画像です データベースからダウンロードした画像です

4

1 に答える 1

3

jpeg として保存しています:

b.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);

ただし、png として読み込む:

Image.FromStream(mem).Save(..., ImageFormat.Png);

それがあなたの問題であると100%確信しているわけではありませんが、問題があるようです。

于 2013-04-14T21:21:36.893 に答える