winform中的picturebox控件显示和保存byte[]图片

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中没有图片");
 }