.Net Core 无法使用位图
Posted
技术标签:
【中文标题】.Net Core 无法使用位图【英文标题】:.Net Core unable to use Bitmap 【发布时间】:2019-06-08 08:54:30 【问题描述】:我正在使用 .Net Core 2.1 开发 Web 服务。
我有一个包含所有像素值(灰度)、宽度、高度的字节数组。我想根据这些参数创建一个位图。
有我的代码(来自工作中的 .Net Framework 4 项目):
public FileResult PostSealCryptItem(Byte[] matrix, int width, int height)
Bitmap bmp = new Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
for (int y = 0; y < height; y++)
for (int x = 0; x < width; x++)
bmp.SetPixel(x, y, Color.FromArgb(ToArgb(matrix, x, y)));
Byte[] data = BitmapToByteArray(bmp);
FileContentResult result = new FileContentResult(data , "image/png");
return result;
但在 .NET Core 中,我遇到了错误:
找不到类型或命名空间名称“位图”(您是否缺少 using 指令或程序集引用?)
我尝试添加对 System.Drawing 的引用,但没有成功。
【问题讨论】:
.NET Core 中没有内置的图像处理,您需要使用第三方工具,但有一些不错的工具。例如我目前正在使用SkiaSharp。 How to use bitmap resources in ASP.NET Core app?的可能重复 这里有System.Drawing.Common @stuartd 缺点是我相信你只能在 Windows 上运行? @DavidG 看起来像,现在我看到它有Microsoft.Win32.SystemEvents
作为依赖项
【参考方案1】:
安装 Nuget 包 System.Drawing.Common
.net core 不再包含它,必须手动添加。
【讨论】:
【参考方案2】:有一个NuGet包代替System.Drawing,你可以使用它
Install-Package System.Drawing.Common
【讨论】:
【参考方案3】:您可以使用 ImageSharp 代替 System.Drawing
https://github.com/SixLabors/ImageSharp
Nuget 控制台
Install-Package SixLabors.ImageSharp -Version 1.0.0-beta0005
【讨论】:
【参考方案4】:Aspose.Drawing 是 System.Drawing 的跨平台替代品。该库是完全托管的,并支持使用 .Net Core 2.1 的 Web 服务。 (我是开发人员之一。)
【讨论】:
那是商业产品吗? @beppe9000 是的。【参考方案5】:这个对我有用
dotnet add package System.Drawing.Common --version 5.0.3
【讨论】:
以上是关于.Net Core 无法使用位图的主要内容,如果未能解决你的问题,请参考以下文章
无法在 .NET Core 中使用 WCF WebHttpBinding
无法使用 EF Core 或 LinqToDb EF Core Tools 或 ADO.NET 运行任何存储过程创建脚本