惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Last Week in AI
Last Week in AI
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园_首页
雷峰网
雷峰网
IT之家
IT之家
I
InfoQ
酷 壳 – CoolShell
酷 壳 – CoolShell
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
B
Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 【当耐特】
大猫的无限游戏
大猫的无限游戏
博客园 - 聂微东
Hugging Face - Blog
Hugging Face - Blog
A
About on SuperTechFans
月光博客
月光博客
P
Proofpoint News Feed
博客园 - 三生石上(FineUI控件)
J
Java Code Geeks
G
Google Developers Blog
小众软件
小众软件
宝玉的分享
宝玉的分享
Jina AI
Jina AI
V
Visual Studio Blog

博客园 - 牛腩

鸿蒙开发DevEco Studio创建hello world项目 SQL Server数据库中用存储过程来取顺序号 cmd命令行下用命令执行SQL脚本到SQL Server数据库中 Blazor项目中建立WebApi NETCORE下用SKIT类库发送微信模板消息 ASP.NET CORE微信支付回调示例代码 nuget离线安装 高德地图API使用(根据地址查经纬度,计算二个坐标之间的距离) ModernWMS - 仓库管理系统简记 .NET开源商城CoreShop简记 windows服务器上用nginx转发到iis中的网站 uniapp中防抖函数debounce的使用 ASP.NET CORE kindeditor在线编辑器示例(上传多图和插入VIDEO标签) uni app uview新增商品页(无限级分类选择和多图上传) C#获取HTML源码 Ant for Blazor做单个表的增删查改 ASP.NET MVC中使用Autofac依赖注入 NET8下生成二维码 NET 7 中使用Session
winform中的picturebox控件显示和保存byte[]图片
牛腩 · 2024-06-04 · via 博客园 - 牛腩

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