我有一个WEB-APP,它是一个Web-Cam应用程序,它将图像和存储作为字节存储到数据库中。现在有了这样说,我也不想保存那些被拍摄的图像并保存在任何数据库中现在的文件夹类型是显示为我保存的图像以保存它并再次查看它的唯一方法我有一个点击捕获图像时触发的输入流。
using (StreamReader reader = new StreamReader(Request.InputStream))
{
hexString = Server.UrlEncode(reader.ReadLine());
string imageName = DateTime.Now.ToString("dd-MM-yy hh-mm-ss");
string imagePath = string.Format("~/Pictures/{0}.png", imageName);
File.WriteAllBytes(Server.MapPath(imagePath), ConvertHexToBytes(hexString));
Session["Byte"] = hexString;
// Session["CapturedImage"] = ResolveUrl(imagePath);
Image1.ImageUrl = "data:image/jpg;base64," + Convert.ToBase64String(ConvertHexToBytes(hexString));
}
我有一个将十六进制字符串转换为字节的方法:
private static byte[] ConvertHexToBytes(string hex)
{
// MemoryStream stream = new MemoryStream();
byte[] bytes = new byte[hex.Length / 2];
for (int i = 0; i < hex.Length; i += 2)
{
bytes[i / 2] = Convert.ToByte(hex.Substring(i, 2), 16);
}
return bytes;
}
我想使用字节显示该图像,我不想将图像保存在任何文件夹中。如何获取这些字节并将它们放入图像中?
我有一个诽谤的图像标签Image1.imageUrl =?我尝试了base64版本,但它不起作用。
答案 0 :(得分:2)
如何获取这些字节并将它们放入图像中?
注意:我根据您的问题做出假设,即您的问题不是将十六进制转换为字节。
想象一下,你的 aspx 页面中有这个:
<asp:Image ID="Image1" runat="server" />
在下面的代码GetImageBytes
中返回byte[]
。然后,为了提供图像(不将其保存到文件中),我们需要做的就是:
using (MemoryStream ms = new MemoryStream(GetImageBytes()))
{
// Image1 is instance of System.Web.UI.WebControls
this.Image1.ImageUrl = "data:image/png;base64," + Convert.ToBase64String(ms.ToArray());
}
private byte[] GetImageBytes()
{
return System.IO.File.ReadAllBytes(Server.MapPath("~/Content/someImage.jpg"));
}
通过在 Content 文件夹中放置图片来测试它,然后尝试一下。既然您知道它有效,您需要确保它可以使用您的ConvertHexToBytes
方法。如果没有,那么ConvertHexToBytes
方法显然有问题。