gpt4 book ai didi

c# - 无法在 Linux 上从磁盘文件创建位图

转载 作者:行者123 更新时间:2023-11-30 23:05:29 26 4
gpt4 key购买 nike

我正在从 .NET Core 项目中引用 CoreCompat.System.Drawing.v2 以及 runtime.linux-x64.CoreCompat.System.Drawing 并执行以下内容:

Bitmap frame = new Bitmap($"{Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)}\\images\\image_0.bmp")

我已检查路径在运行时是否正确。在 Windows 上这工作正常,但在 Debian 上我得到:

Unable to update the static FcBlanks: 0x0600
Unable to update the static FcBlanks: 0x0601
Unable to update the static FcBlanks: 0x0602
Unable to update the static FcBlanks: 0x0603
Unable to update the static FcBlanks: 0x06dd
Unable to update the static FcBlanks: 0x070f
Unable to update the static FcBlanks: 0x2028
Unable to update the static FcBlanks: 0x2029
Unable to update the static FcBlanks: 0xfff9
Unable to update the static FcBlanks: 0xfffa
Unable to update the static FcBlanks: 0xfffb

Unhandled Exception: System.ArgumentException: A null reference or invalid value was found [GDI+ status: InvalidParameter]
at System.Drawing.GDIPlus.CheckStatus(Status status)
at System.Drawing.Bitmap..ctor(String filename, Boolean useIcm)
at TestVideoConvert.TestVideoConvert.Create() in /home/osboxes/Downloads/Test2/TestVideoConvert/TestVideoConvert.cs:line 44
at ImageResizeNetCore.Program.Main(String[] args) in /home/osboxes/Downloads/Test2/ImageResizeNetCore/Program.cs:line 15

我已经安装了 libgdiplus,但没有成功。

使用 System.Drawing.Common 会出现以下错误:

Unhandled Exception: System.ArgumentException: Parameter is not valid.
at System.Drawing.Bitmap..ctor(String filename, Boolean useIcm)
at TestVideoConvert.TestVideoConvert.Create() in /home/osboxes/Downloads/Test2/TestVideoConvert/TestVideoConvert.cs:line 44
at ImageResizeNetCore.Program.Main(String[] args) in /home/osboxes/Downloads/Test2/ImageResizeNetCore/Program.cs:line 15

我在某处读到这可能是由于图像尺寸太大,但在我的情况下它是 1920x1080 bmp,所以没有异常。

最佳答案

您需要为当前环境使用正确的路径分隔符

在您的情况下,您正在尝试使用 Windows 分隔符(反斜杠)连接路径。但是,Linux 使用正斜杠作为其路径分隔符。

因此在 Windows 上,您的路径如下所示:..\images\image_0.bmp

但在 Linux 上,您的路径实际上是这样的:../images/image_0.bmp

为了让您的代码在所有受支持的环境中工作,请使用 Path.DirectorySeparatorChar 值作为分隔符。

在这种情况下,您的代码将变为以下内容:

var delim = Path.DirectorySeparatorChar;
Bitmap frame = new Bitmap($"{Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)}{delim}images{delim}image_0.bmp");

关于c# - 无法在 Linux 上从磁盘文件创建位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48785435/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com