2013-04-14 43 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

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