图片格式未知

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(使用前将#替换为@)

图片格式未知 的相关文章

  • 可空属性与可空局部变量

    我对以下行为感到困惑Nullable types class TestClass public int value 0 TestClass test new TestClass Now Nullable GetUnderlyingType
  • AccessViolationException 未处理

    我正在尝试使用史蒂夫 桑德森的博客文章 http blog stevensanderson com 2010 01 28 editing a variable length list aspnet mvc 2 style 为了在我的 ASP
  • 什么是 C 语言的高效工作流程? - Makefile + bash脚本

    我正在开发我的第一个项目 该项目将跨越多个 C 文件 对于我的前几个练习程序 我只是在中编写了我的代码main c并使用编译gcc main c o main 当我学习时 这对我有用 现在 我正在独自开展一个更大的项目 我想继续自己进行编译
  • 我需要改变什么才能正确实施 SOLID 设计?

    我正在尝试学习 SOLID 设计 但我认为我犯了一个错误 我认为IItem界面不遵循里氏替换原则在我的内Player但是 我不知道如何解决这个问题 如果我从 IItem 添加新的界面绘图 我将必须更改 Player 的方法以添加一个案例来处
  • WebApi 添加另一个 Get 方法

    我有一个非常标准的 WebApi 可以执行一些基本的 CRUD 操作 我正在尝试添加一些不同类型的查找 但不太确定它应该如何完成 这是我目前的FoldersController public class FoldersController
  • 将输入数据发送到node.js中的子进程

    我正在编写代码以在 Node js 环境中创建在线 C 编译器 使用spawn函数我创建了一个子进程 它将编译代码并执行它并将输出发送回用户 但我需要将输入发送到正在运行的 C 程序 我用了child stdin write data 用于
  • 使用 terminfo 的终端颜色?

    我正在编写一个 C 类 允许在终端中使用颜色 我希望它适用于每个终端 在支持真彩色 24 位 的终端上打印 在支持它的终端上具有 256 色 6x6x6 其他都是基本的 16 种颜色 我曾经使用 termcap 编写过一次 C 函数 并且我
  • C# 3维数组

    我想将 3 维数组中的 ARRAY 存储到buildingCostIds 中 但它说我必须有第三个数字 public static int buildingCost 0 1 2 5 5 5 public static void addBui
  • ViewDataFactory 和强类型母版页

    我试图让我的强类型母版页在我的 ASP MVC 2 0 应用程序中工作 在这两篇文章的帮助下我已经取得了很大的进展 在 ASP NET MVC 中将数据传递到母版页 https stackoverflow com questions 785
  • 保存时的 NHibernate FlushMode

    我已将 NHibernate 会话上的 FlushMode 属性设置为 FlushMode Never 但是当我调用 session Save User 时 无论如何都会调用数据库 这是应该如何工作的吗 我认为在我调用 Flush 之前它不
  • 在哪里可以找到有关嵌入式 C++ 的信息?

    我想查找有关 嵌入式平台中的 C 编程 的信息 我用谷歌搜索 但无法找到有关该主题的足够信息 我到底想找到的是 C 在嵌入式环境中到底如何有用 并带有详细的描述和示例 如果可用 如果我能得到 任何人都可以建议任何链接或任何免费电子书下载吗
  • 需要在c#中的字符串中的“单词”之后获取一个字符串

    我在 C 中有一个字符串 我必须在字符串中找到特定的单词 code 并且必须获取单词 code 之后的剩余字符串 该字符串是 错误描述 code 1 所以我必须找到这个词code在上面的字符串中 我必须获取错误代码 我见过正则表达式 但现在
  • 无法将类型“int”隐式转换为“ushort”:已显式转换

    我正在尝试将 int 显式转换为 Short 但收到 Cannotimplicy conversion type int to ushort ushort quotient 12 ushort channel 16 我正在使用 Net Mi
  • 为什么我的 WPF 复选框绑定不起作用?

    我正在使用 MVVM VS 2008 和 NET 3 5 SP1 我有一个项目列表 每个项目都公开一个 IsSelected 属性 我添加了一个复选框来管理列表中所有项目的选择 取消选择 更新每个项目的 IsSelected 属性 一切正常
  • 为什么 Sleep() 会使后续代码减慢 40 毫秒?

    我最初是在 coderanch com 上询问这个问题的 所以如果您尝试在那里帮助我 谢谢 并且不必重复这个努力 不过 coderanch com 主要是一个 Java 社区 而且 经过一些研究 这似乎确实是一个 Windows 问题 因此
  • 使对象在运行时不可变 [C#]

    有什么方法 我希望利用反射 可以使实例化对象不可变及其所有公共财产 我有一个来自其他人的代码库 没有可用源 的类 我需要使用它 并且我基本上希望在实例化该类后 如果任何地方的任何代码段尝试调用该类中的公共设置器 则抛出异常 注意 我不想在类
  • 何时使用函子而不是 lambda

    是否存在创建函子比使用 lambda 更有意义的情况 我知道我的问题实际上是相反的何时在函子上使用 lambda https stackoverflow com questions 4686507 lambda expression vs
  • 在 Visual Studio 报表中显示对象数据源的标准 新数据集?

    在 报告数据 新数据集 对话框中 我只有大约 5 个类 我的主要商务课程都没有出现 一些确实出现的不显示和属性 有些显示的是通用的 甚至显示这些也没有多大意义 例如SortedListBase
  • 如何通过 msbuild / msdeploy 部署 .net core rc2 项目?

    目前 我们通过调用来部署您的 Web 应用程序项目 csproj MSBuild exe与DeployOnBuild true and PublishProfile Whatever将我们的项目部署到以下之一的参数 本地 IIS Azure
  • 在.NET Core RC2中构建.exe文件

    每次我使用新的 NET Core RC2 模板构建项目时not提供了一个可运行的 EXE文件 如果我按 F5 来调试我的控制台应用程序 它可以通过 C Program Files dotnet dotnet exe 应用 如果我使用 dot

随机推荐

  • 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