winform中的picturebox控件显示和保存byte[]图片
完全是靠查百度“文心一言”来弄出来的,先把代码片段记下来,以后说不定什么时候会用到
窗体加载时picturebox控件显示从数据库中取出的byte[]图片
byte[] imageBytes = book?.BookCover;
// 使用MemoryStream来读取byte[]中的数据
using (MemoryStream ms = new MemoryStream(imageBytes))
{
// 从MemoryStream中加载Image
Image image = Image.FromStream(ms);
// 将Image对象赋值给PictureBox的Image属性
pictureBox1.Image = image;
// (可选)设置PictureBox的SizeMode以适应图片
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
}
点击按钮选择图片后显示在picturebox控件中:
private void btnOpenImage_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "Image Files (*.jpg, *.jpeg, *.png, *.gif) | *.jpg; *.jpeg; *.png; *.gif";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
string filePath = openFileDialog.FileName;
pictureBox1.Image = Image.FromFile(filePath);
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage; // 或者其他你想要的显示模式
}
}
保存时从picturebox控件中取出byte[]图片,再存到数据库中
byte[] imageBytes = null;
// 检查PictureBox中是否有图片
if (pictureBox1.Image != null)
{
// 创建一个MemoryStream对象
using (MemoryStream memoryStream = new MemoryStream())
{
// 将图片保存到MemoryStream中,这里假设你想要保存为JPEG格式
pictureBox1.Image.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Jpeg);
// 将MemoryStream的位置设置为开始位置,以便读取数据
memoryStream.Position = 0;
// 读取MemoryStream中的数据到byte数组中
imageBytes = memoryStream.ToArray();
// 现在你可以使用imageBytes数组了,比如保存到文件或发送到服务器等
// ...
// 示例:将byte[]数组保存为文件
// File.WriteAllBytes("path_to_save_image.jpg", imageBytes);
}
}
else
{
// 处理PictureBox中没有图片的情况
MessageBox.Show("PictureBox中没有图片");
}