Csharp/C#教程:将byte 转换为图像分享


将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

(0)
上一篇 2021年11月21日
下一篇 2021年11月21日

精彩推荐