图片格式未知

2024-04-23

我正在尝试使用 .Net Core 2.2 将图像读取为 Base64 格式,并且它抛出

ArgumentException:图像格式未知。 System.Drawing.Image.FromFile(字符串文件名, bool useEmbeddedColorManagement)

文件路径是正确的,我已经两次和三次检查该文件是否存在。

我尝试使用大写和小写扩展名来命名我的 PNG。

这种情况在 Windows 本地不会发生,但一旦将应用程序部署到 Linux 上就会发生。有问题的代码如下。

    public static string ImageToBase64(string filePath)
    {
        System.Diagnostics.Debug.WriteLine($"File Path for Image: {filePath}");
        string base64String;
        using (var image = Image.FromFile(Path.GetFullPath(filePath)))
        {
            using (var ms = new MemoryStream())
            {
                image.Save(ms, image.RawFormat);
                image.Dispose();
                byte[] imageBytes = ms.ToArray();
                base64String = Convert.ToBase64String(imageBytes);
                imageBytes = null;
                ms.Dispose();
            }
        }
        GC.Collect();
        return base64String;
    }

EDIT

我还尝试使用带有位图的文件流。

    public static string ImageToBase64(string filePath)
    {
        string base64String;
        using(var fs = new FileStream(filePath,FileMode.Open))
        using (var image = new Bitmap(fs))
        {
            using (var ms = new MemoryStream())
            {
                image.Save(ms, ImageFormat.Png);
                image.Dispose();
                byte[] imageBytes = ms.ToArray();
                base64String = Convert.ToBase64String(imageBytes);
                imageBytes = null;
                ms.Dispose();
            }
        }
        GC.Collect();
        return base64String;
    }

这会引发以下异常:

抛出异常:“System.ArgumentException” System.Drawing.Common.dll:“图像格式未知。”堆栈跟踪:

在 System.Drawing.Image.Initialize FromStream(流流) 在 System.Drawing.Bitmap..ctor(流流)


虽然我仍然不确定为什么 Image.FromFile 和使用 Bitmap 不起作用,但我设法通过使用让它工作图像锐利 https://github.com/SixLabors/ImageSharp来自六工。

工作代码如下。

    public static string ImageToBase64(string filePath)
    {
        string base64String;
        using (var image = SixLabors.ImageSharp.Image.Load(filePath))
        {
            using (var ms = new MemoryStream())
            {
                image.Save(ms, new PngEncoder());
                image.Dispose();
                byte[] imageBytes = ms.ToArray();
                base64String = Convert.ToBase64String(imageBytes);
                imageBytes = null;
                ms.Dispose();
            }
        }
        GC.Collect();
        return base64String;
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

图片格式未知 的相关文章

随机推荐

  • Perforce:如何删除 p4v 拒绝删除的变更列表?

    使用 perforce 一段时间后 我留下了许多尚未完成的变更列表 为了清理 我想摆脱其中的一部分 所以这就是让事情变得复杂的原因 对于更改的子集 客户端的主机已更改 某些更改包含搁置的文件 更改列表中的文件可能会被删除或移动 当更改列表满
  • iOS——codeSense 中自动合成属性的“添加”方法

    我刚刚创建了一个具有以下属性的 iOS 类 property nonatomic strong NSString foo property nonatomic strong NSObject bar property nonatomic C
  • 如何忽略多容器 Pod 中容器的故障?

    我有一个多容器应用程序 app sidecar 两个容器都应该一直处于活动状态 但 sidecar 并不是那么重要 Sidecar 依赖于外部资源 如果该资源不可用 Sidecar 就会崩溃 它会导致整个吊舱瘫痪 Kubernetes 尝试
  • VirtualBox 是否可以使用 python3 绑定?

    我正在尝试使用 VirtualBox 的 python 3 绑定 但似乎存在损坏的依赖关系 我觉得很奇怪的是 在人们遇到这个问题的四年里 这个问题还没有得到解决 也许我错过了一些明显的东西 众所周知它会发生 我已经通过操作系统包管理器安装了
  • javax.mail.MessagingException:无法连接到 SMTP 主机:<主机名> 端口:25 响应:554

    我正在尝试使用 java mail api 发送邮件 我的 smtp 服务器是 ibm 服务器 我面临这个异常 javax mail MessagingException Could not connect to SMTP host
  • 如何让 Cargo 显示哪些文件导致重建?

    我在用cargo maturin and pytest构建混合 Python Rust 项目 在开发过程中 我经常循环使用命令 cargo test p mypkg release maturin develop release pytho
  • 如何从 fresco(facebook 的 android lib)中排除 arm64-v8a 目录

    正如你所看到的 Fresco有arm64 v8a目录 但我不想要它 我应该在build gradle中写什么 compile com facebook fresco fresco 0 5 3 exclude group com androi
  • Android 开源人脸识别 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 使用Android 人脸识别有哪些开源选项 以下是我在人脸识别库上找到的一些链接 Android s F
  • 我可以通过委托给 EF 中的存储过程来延迟加载导航属性吗?

    我有以下客户类别 public class Customer public long Id get set public virtual ICollection
  • Nginx 对 cms 后端的重写规则

    我需要在 nginx 服务器中制定 url 重写规则 服务器块 就像我之前的 apache 服务器一样 这是 htaccess 中的代码 我需要将其实现 转换 到我现有的代码中 RewriteRule A Za z0 9 A Za z0 9
  • 如何通过 sql plus 从命令行发出单个命令?

    使用 SQL Plus 您可以运行script从命令行使用 运算符 如下所示 c gt sqlplus username password databasename c my script sql 但是是否可以只运行一个单一命令使用类似的语
  • 从色调 0 到 360 的 SVG 线性渐变

    source elv1s ru http elv1s ru files svg gradient hue png 做这样的渐变的正确方法是什么 我试过this SVG http elv1s ru files svg gradient hue
  • 如何使用表达式树安全访问可为空对象的路径?

    当我将反序列化的 XML 结果放入 xsd 生成的对象树中 并希望使用该树 a b c d e f 内的某些深层对象时 如果该查询路径上的任何节点丢失 它将给出异常 if a b c d e f null Console Write ok
  • 使用 inno setup 安装时检查可用端口

    我正在尝试在 inno setup 中创建以下功能 用户被要求输入他们希望我的应用程序进行通信的端口 一旦他们进入端口 他们就可以点击检查按钮 此检查按钮将运行一些代码来查看安装计算机上的端口是否可用 到目前为止 我可以为用户创建输入框来输
  • VectorDrawable 导致 NumberFormatException

    我正在使用 Android Lollipop 的全新且炫酷的矢量绘图 但对于某些 SVG 文件 当使用该可绘制对象时 我总是在运行时遇到 NumberFormatException 这是我的堆栈跟踪 android view Inflate
  • 无法从干预/图像中的给定 url 进行初始化": "^2.3

    我想保存来自 google plus 的图像 如下网址所示 它在本地计算机上也能正常工作 但上传到 ubuntu14 时出现以下错误 image Image make https lh6 googleusercontent com Gcp
  • 如何禁用鼻子测试的覆盖率报告

    希望有一个简单的 python djangonose测试问题 虽然我找不到答案nose的文档 运行测试后如何停止显示覆盖率报告 manage py test 我的覆盖率报告有一个巨大的问题 迫使我向后滚动几十行以获取失败测试的回溯 这确实中
  • python中无替换的加权随机样本

    我需要获得一个k sized从总体中进行无替换的样本 其中总体中的每个成员都有相关的权重 W Numpy s 随机选择如果没有更换 则不会执行此任务 并且随机抽样不会采用加权输入 目前 这就是我正在使用的 P np zeros 1 Pare
  • Node.js 承诺、异步或只是回调

    你能向初学者解释一下 承诺 异步 和 回调 之间的区别吗 这些术语如何相互关联 这些是同一件事吗 不同的东西 我什么时候使用哪个 异步是启动计算并提供函数或注册处理程序的一般设计模式 该处理程序最终将在计算完成时使用计算结果进行调用 而不是
  • 图片格式未知

    我正在尝试使用 Net Core 2 2 将图像读取为 Base64 格式 并且它抛出 ArgumentException 图像格式未知 System Drawing Image FromFile 字符串文件名 bool useEmbedd