使用 WPF 将二进制文件检索回图像和数据库并保存到文件夹中

2024-03-10

我已成功将图像转换为二进制并使用 linq to sql WPF 将其保存到数据库中,现在我想将其检索回图像格式并将其保存到计算机中的特定文件夹中。

我读过很多博客和文章,它们从数据库检索图像二进制文件,然后将其显示到 PictureBox 中,我想要做的是选择图像并使用 linq to sql 将其保存到特定文件夹。

到目前为止我尝试上传图像的代码:

private void Browse_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.DefaultExt = ".jpg";
            ofd.Filter = "Image File (.jpg) | *.jpg";

            Nullable<bool> result = ofd.ShowDialog();

            if(result == true)
            {
                string fileName = ofd.FileName;
                _txtFileName.Text = fileName;
            }
        }

        private void Upload_Click(object sender, RoutedEventArgs e)
        {
            using(ImageDataContext db=new ImageDataContext())
            {
                image_data img = new image_data();

                img.image = ConverImageToBinary(_txtFileName.Text);

                try
                {
                    db.image_datas.InsertOnSubmit(img);
                    db.SubmitChanges();

                    MessageBox.Show("Picture Upload Successfully", "Success", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                }

                catch(Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }

        public static byte[] ConverImageToBinary(string convertedImage)
        {
            try
            {
                FileStream fs = new FileStream(convertedImage, FileMode.Open, FileAccess.Read);

                BinaryReader br = new BinaryReader(fs);

                byte[] image = br.ReadBytes((int)fs.Length);

                br.Close();

                fs.Close();

                return image;
            }

            catch(Exception ex)
            {
                throw ex;//MessageBox.Show(ex.Message, "error", MessageBoxButton.OK, MessageBoxImage.Exclamation);
            }
        }

首先读取图像的代码非常复杂,您将其作为流打开并很好地读取所有字节。有一个方法可以完全做到这一点,因此您可以将整个 ConverImageToBinary 方法替换为

img.image = File.ReadAllBytes(_txtFileName.Text);

另外,您从未将任何内容“转换”为任何内容,图像只是磁盘上的字节数组,您已经读取了它,将其保存到数据库中,如果您将其读回并保存回来(这次使用 File.WriteAllBytes)它会工作得很好,所以

如果您想写入磁盘,只需将图像保存回磁盘,如下所示:

File.WriteAllBytes(@"d:\myfile.bmp",img.Image.ToArray()) ;

并确保更改扩展名以匹配您的文件类型(例如 bmp 表示位图 jpeg 表示 jpeg 等)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 WPF 将二进制文件检索回图像和数据库并保存到文件夹中 的相关文章

随机推荐

  • 从 .eml 文件获取文本的最佳方法是什么?

    我尝试从本地驱动器上的几个 eml 文件获取主题和消息正文 现在我尝试使用 Apache Commons Email 但有时它会循环且没有错误 这是我的代码 它应该从 eml 获取文本并将其保存到 txt MimeMessage mimeM
  • 如何修复 x86 Turbo 汇编语言的输出

    DOSSEG MODEL SMALL STACK 100h DATA UserName db Name CLRF db 10 13 inputName db 24 dup CurYear db Current Year inputCurre
  • GWT java.util.Date 序列化错误

    GWT 无法正确序列化 Java 日期 当我尝试通过网络发送用 Javascript 创建的日期时 我发现 1983 年之前的年份中 4 月 1 日 有趣 到 10 月 25 日之间的日期会减去一天 这意味着 例如 1982 04 01 和
  • Databricks 删除增量表?

    如何在 Databricks 中删除增量表 我在文档中找不到任何信息 也许唯一的解决方案是使用 magic 命令或 dbutils 删除文件夹 delta 内的文件 fs rm r delta mytable EDIT 为了澄清起见 我在这
  • 如何在 Mobile Safari 中检测 3G 与 Wifi 连接?

    我特别询问的是移动网页上的 javascript 而不是 Objective C 应用程序 是否有像 Apple Reachability for javascript 这样的东西 以便我可以知道 Edge 3G 或 Wifi 连接何时建立
  • 如何从 cognito 异步函数返回响应并将其显示在页面上?

    给出下面的代码 当响应成功或失败时 如何将响应输出回网页 loginUser data var authenticationData Username data email Password data password var authen
  • ConfigParser - 打印 config.sections() 返回 []

    我正在尝试使用ConfigParser模块来解析 ini文件 问题是当我尝试打印时sections或者其他什么 它返回空列表 配置文件 SERVER host localhost port 9999 max clients 5 REGULA
  • 如何在 Android NDK 中创建新的 NativeWindow?

    我尝试了 test libstdc 演示 并且喜欢我可以从控制台启动它 而无需运行成熟的 Android 应用程序 我想创建一个 opengl 上下文 以便我能够从控制台内执行我的 opengl es 2 0 应用程序 而无需太多麻烦 知道
  • Distutils:构建多个共享方法的 Python 扩展模块(用 Swig 编写)

    我有四个 C 文件 A h A cpp B h B cpp A h 包含在 B cpp 中 A h pragma once void A A cpp include
  • 以编程方式创建选择列表

    有谁知道使用 JQuery 以编程方式创建包含选项的 HTML 选择列表的技术 var arr val 1 text One val 2 text Two val 3 text Three var sel
  • Redis serviceStack池化连接客户端

    我正在设计一个使用 Redis 作为数据库的 Web 服务 我想了解使用 Redis 与 StackService 客户端连接的最佳实践 重点是 我一直在阅读有关 Redis 的内容 并且发现与服务器交互的最佳方式是使用单个并发连接 问题是
  • 使用 Firebase 进行数据库式查询

    有没有一种快速的方法可以使用 Firebase 执行数据库式查询 例如 给出 firebase 参考users有字段user id name and age 执行与此类似的查询的最佳方法是什么 SELECT name FROM users
  • 如何处理原始数据(用Python)? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我没有很好地解释这一点 所以希望这个编辑更有意义 基本上我必须编写适用于大量测试用例的代码 下面的输入只是一个示例 所以我无法手动将输入输
  • Angular 2 - 当(observableData | async)尚未解析时显示加载信息

    正如标题所说 我想拥抱 rxjs Observables 的力量 我现在应该做什么 dataview html div Loading data div gt ul li d value li ul dataview ts data any
  • AutoFixture 2 With() 无法像 AutoFixture 1 中那样工作?

    我正在将我的测试移植到自动夹具2 0 http autofixture codeplex com 我遇到了一些奇怪的行为 我既无法解释也无法修复 这个简单的测试对我来说失败了 var autoFixtures new Fixture var
  • Silverlight 控件由于命令而未被垃圾回收

    我的控制之所以能保持活力 是因为它必须服从命令 我怎样才能打破这个参考 这导致我的应用程序中出现严重的内存泄漏 该控件位于 DataTemplate 内部 因此我无法直接访问它 这是我的 ANTS 内存配置文件 我到底该如何断开这种连接 虽
  • 有没有办法通过为每个测试打开浏览器实例来并行运行量角器测试?

    我的量角器测试面临同步问题 我想与我的实际设置相比并行运行我的测试 事实上 目前我的测试一个接一个地运行 我知道如何使用 TestsNG 执行此操作 但不确定如何使用 Jasmin Framework 执行此操作 要在两个浏览器之间分配测试
  • IDEA Groovy 测试类已经存在

    IDEA 向我的 groovy 类发出警告 类 MyClassTest 已存在于 my class package 中 当我运行测试时 它似乎也没有很好地保持类的更新 我将添加一个保证失败或成功的断言 直到稍后它才会识别它 到目前为止似乎是
  • 确定 Java 中的有效日期

    我有一个家庭作业 要求用户以 mm dd yyyy 格式在 Java 中输入日期 然后确定输入的日期是否有效 我已经能够成功地对每个月 除了二月 执行此操作 因为您必须考虑闰年 我有这个代码 import java util Scanner
  • 使用 WPF 将二进制文件检索回图像和数据库并保存到文件夹中

    我已成功将图像转换为二进制并使用 linq to sql WPF 将其保存到数据库中 现在我想将其检索回图像格式并将其保存到计算机中的特定文件夹中 我读过很多博客和文章 它们从数据库检索图像二进制文件 然后将其显示到 PictureBox