将byte 转换为图像
我已将一个Image作为byte[]
上传到我的数据库,现在我试图将其显示出来。
出现错误 – 用户代码未处理参数exceptionParameter is not valid
在这条线上
newImage = System.Drawing.Image.FromStream(stream);
这是我的代码
for (int i = 0; i < topRatingList.Count; i++) { int commentRating = topRatingList[i].CommentRating; int drinkID = topRatingList[i].DrinkID; if (i == 0) { DrinkMenuDAO drink = DrinkMenuBLL.getDrinkMenu(drinkID); LinkButton1.Text = drink.DrinkName; ImageButton1.ImageUrl = byteArrayToImage(drink.DrinkImage); } } private string byteArrayToImage(byte[] byteArrayIn) { System.Drawing.Image newImage; string strFileName = Server.MapPath("~/Temp/images/") + ".jpg"; if (byteArrayIn != null) { using (MemoryStream stream = new MemoryStream(byteArrayIn)) { newImage = System.Drawing.Image.FromStream(stream); newImage.Save(strFileName); } return strFileName; } else { return ""; } }
我用来存储图像的代码
protected void bn_upload_Click(object sender, EventArgs e) { lbl_msg.Text = ""; Stream imgStream = FileUpload1.PostedFile.InputStream; BinaryReader imgBinary = new BinaryReader(imgStream); bytes = imgBinary.ReadBytes((Int32)imgStream.Length); imgBinary.Close(); imgStream.Close(); string src = byteArrayToImage(bytes); if (src.Equals("")) { } else { Image1.ImageUrl = "~/Temp/UploadedImage.jpg"; } } private string byteArrayToImage(byte[] byteArrayIn) { System.Drawing.Image newImage; string strFileName = Server.MapPath("~/Temp/") + "UploadedImage.jpg"; if (byteArrayIn != null) { using (MemoryStream stream = new MemoryStream(byteArrayIn)) { newImage = System.Drawing.Image.FromStream(stream); newImage.Save(strFileName); } return strFileName; } else { return ""; } } protected void btn_submit_Click(object sender, EventArgs e) { DrinkMenuBLL.uploadImg(bytes); lbl_msg.Text = "uploaded"; }
我在数据库和我使用的sql中使用了varbinary(MAX)
public static void UploadImg(byte[] drinkImage) { SqlConnection con = new SqlConnection(Constring.getConString()); string sql = "Update DrinkMenu set drinkImage = (@imgData) where drinkID = 4"; SqlCommand cmd = new SqlCommand(sql, con); cmd.Parameters.Add("@imgData", SqlDbType.Binary).Value = drinkImage; try { con.Open(); cmd.ExecuteNonQuery(); } finally { con.Close(); cmd.Dispose(); con.Dispose(); } }
一个问题可能是以下问题:
bytes = imgBinary.ReadBytes((Int32)imgStream.Length);
如果流长度大于Int32.MaxValue,因为它是Int64,该怎么办? 也许您正在截断您的图像…使用此方法来将流读取到缓冲区:
上述就是C#学习教程:将byte 转换为图像分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
public static Byte[] ReadStream(Stream input) { Byte[] buffer = new Byte[(16 * 1024)]; using (MemoryStream stream = new MemoryStream()) { Int32 read; while ((read = input.Read(buffer, 0, buffer.Length)) > 0) stream.Write(buffer, 0, read); return stream.ToArray(); } } protected void bn_upload_Click(object sender, EventArgs e) { lbl_msg.Text = ""; Byte[] bytes = ReadStream(FileUpload1.PostedFile.InputStream); String src = byteArrayToImage(bytes); if (!src.Equals("")) Image1.ImageUrl = "~/Temp/UploadedImage.jpg"; }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/957632.html