上传图片到数据库,读取数据库中图片并显示(C#)
时间: 2023-08-22 17:06:39 浏览: 47
首先,将图片转换成二进制流,然后将二进制流存储到数据库中。以下是将图片添加到数据库的示例代码:
```csharp
// 读取图片文件
var image = Image.FromFile(@"C:\path\to\image.jpg");
// 将图片转换成二进制流
byte[] imageBytes;
using (var ms = new MemoryStream())
{
image.Save(ms, ImageFormat.Jpeg);
imageBytes = ms.ToArray();
}
// 创建数据库连接和命令对象
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
var command = new SqlCommand("INSERT INTO Images (ImageData) VALUES (@ImageData)", connection);
// 添加参数
command.Parameters.Add("@ImageData", SqlDbType.VarBinary, imageBytes.Length).Value = imageBytes;
// 执行插入操作
command.ExecuteNonQuery();
}
```
接下来,从数据库中读取二进制流,并将其转换为图像。以下是从数据库中读取并显示图像的示例代码:
```csharp
// 创建数据库连接和命令对象
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
var command = new SqlCommand("SELECT ImageData FROM Images WHERE ImageId = @ImageId", connection);
// 添加参数
command.Parameters.Add("@ImageId", SqlDbType.Int).Value = imageId;
// 执行查询操作
var reader = command.ExecuteReader();
// 读取二进制数据并转换成图像
if (reader.Read())
{
var imageBytes = (byte[])reader["ImageData"];
using (var ms = new MemoryStream(imageBytes))
{
var image = Image.FromStream(ms);
// 显示图像
pictureBox1.Image = image;
}
}
}
```
其中,`imageId` 是要读取的图片在数据库中的唯一标识符。需要注意的是,如果从数据库中读取的二进制数据不是图像格式,则会抛出异常。