gpt4 book ai didi

linux - .NET Core : using System. Drawing.Common on Linux in Docker - "Could not open display"错误

转载 作者:太空狗 更新时间:2023-10-29 11:20:57 25 4
gpt4 key购买 nike

我已将代码移植到使用 System.Drawing 的 .NET Core。目前看来 System.Drawing.Common 来自 corefx supports Linux。但是我在 Linux 上运行我的代码有困难。

特别是我得到:

NotSupportedException "Could not open display (X-Server required. Check your DISPLAY environment variable)"

对于这段代码:

Graphics gr = Graphics.FromHwnd(IntPtr.Zero);

之前我得到

DllNotFoundException "Unable to load DLL 'libX11': The specified module or one of its dependencies could not be found.\n (Exception from HRESULT: 0x8007007E)"

使用堆栈跟踪:

   at System.Drawing.LibX11Functions.XOpenDisplay(IntPtr display)
at System.Drawing.Graphics.FromHwnd(IntPtr hwnd)
at mycode

但是我通过安装 libx11-dev 包解决了这个问题。

这是我的 Dockerfile:

FROM microsoft/aspnetcore
ENV DOTNET_SKIP_FIRST_TIME_EXPERIENCE true

# install libgdiplus for System.Drawing
RUN apt-get update && \
apt-get install -y --allow-unauthenticated libgdiplus libc6-dev

# install x11 for System.Drawing
RUN apt-get update && \
apt-get install -y --allow-unauthenticated libx11-dev

那么我该如何处理“无法打开显示(需要 X-Server。检查您的 DISPLAY 环境变量)”错误?

最佳答案

或许,您可以使用基于图像的Graphics,而不是基于窗口的。像这样:

var g = Graphics.FromImage(new Bitmap(1, 1));

关于linux - .NET Core : using System. Drawing.Common on Linux in Docker - "Could not open display"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49453681/

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