2013-04-14 40 views
1

我已經編寫了一個程序,在該程序上我從數據庫SQL Server 2008 R2上傳和下載圖像。 我用下面的代碼上傳圖片:當我從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); 

但是,我有一個很大的問題圖像背景使黑色從數據庫保存到硬盤後。

This is image that i upload it to data base This is image that i download it from data base

+1

您正在保存爲jpeg,但以png加載。那是故意的嗎? – bryanmac

回答

3

您正在保存爲JPEG:

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

但裝載爲PNG:

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

不是100%肯定這是你的問題,但它看起來有問題的。

+0

非常感謝,你非常精明。 –