我需要将字节数组转换为图像。我在我的sql server数据库中将图像存储为字节数组,我将其作为方法的参数 这是我的数据库表:
Rid int
Name varchar
Email varchar
Photo Image
答案 0 :(得分:1)
试试这个
// Lets assume you have taken image byte array into imageBytes variable
MemoryStream ms = new MemoryStream(imageBytes);
Image image= Image.FromStream(ms);
// Save the file into folder
image.Save(filename: "filename with path");
答案 1 :(得分:0)
您可以使用Image.FromStream
并执行类似的操作。
Image img;
using (var ms = new MemoryStream(bytes))
{
img= Image.FromStream(ms);
}
答案 2 :(得分:0)
鉴于您最初的问题是;
如何将字节数组转换为图像并在图像中显示图像 asp.net中的控制器
我假设您正在使用MVC。最简单的方法是像这样创建你的控制器;
public class ImageController : Controller
{
public ActionResult GetImage(int i)
{
byte[] bytes = db.GetImage(i); //Get the image from your database
return File(bytes, "image/png"); //or "image/jpeg", depending on the format
}
}
然后,在您看来,只需使用
<img src="@Url.Action("GetImage", "Image", new { id = Model.Id })" />
其中Model.Id
是图片的ID。
还有其他方法,例如将图像转换为Base64阵列并将其放入模型中,例如;
public class YourModel
{
public int Id { get; set; }
public string ImageB64 { get; set; }
}
在您的控制器中;
public class YourController : Controller
{
public ActionResult YourView(int id)
{
var model = new YourModel();
var image = db.GetImage(id);
model.Id = id;
model.ImageB64 = String.Format("data:image/png;base64,{0}", Convert.ToBase64String(image));
return View(model);
}
}
在你看来;
<img src="@Model.ImageB64" />
但是像上面这样做不会缓存图像并且会使你的CSS膨胀。通常,这不是显示图像的最佳方式。如果可能的话,坚持使用第一个选项。