You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Standard 2.0中WriteableBitmap无法使用的问题求助

解决.NET Standard 2.0 Azure Functions中WriteableBitmap不可用的问题

你碰到的这个问题很典型——WriteableBitmap是WPF框架专属的UI类,属于PresentationCore程序集,而.NET Standard 2.0是跨平台标准,并不包含这类仅适用于桌面UI的组件,所以你在Azure Functions项目里找不到这个引用完全正常。

下面给你几个可行的替代方案,都是适配.NET Standard 2.0的跨平台图像处理库:

方案1:使用SixLabors.ImageSharp(推荐)

这是一款轻量、跨平台的图像处理库,完全支持.NET Standard 2.0,API设计直观,能完美替代WriteableBitmap的大部分图像操作场景。

操作步骤:

  1. 通过NuGet安装包:Install-Package SixLabors.ImageSharp
  2. 替换你原有的WriteableBitmap创建代码,以下是从像素数组生成图像的示例:
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats;

// 假设你的array是像素数据数组
var width = array.Columns;
var height = array.Rows;
// 对应原代码中的Bgr24格式
using var image = new Image<Bgr24>(width, height);

// 将像素数据复制到图像中(根据你的array类型调整逻辑)
image.ProcessPixelRows(accessor =>
{
    for (int y = 0; y < height; y++)
    {
        var row = accessor.GetRowSpan(y);
        // 替换为你从array获取当前行像素的逻辑
        // 比如 array.GetRow(y).CopyTo(row);
    }
});

// 后续图像处理操作均可使用ImageSharp的API完成

方案2:使用SkiaSharp

SkiaSharp是Google Skia图形库的.NET绑定,同样跨平台且支持.NET Standard 2.0,适合复杂图像处理需求。

操作步骤:

  1. 安装NuGet包:Install-Package SkiaSharp
  2. 示例代码创建类似图像:
using SkiaSharp;

var width = array.Columns;
var height = array.Rows;
var imageInfo = new SKImageInfo(width, height, SKColorType.Bgra8888, SKAlphaType.Opaque);
using var surface = SKSurface.Create(imageInfo);
var canvas = surface.Canvas;

// 可将像素数组绘制到canvas,或直接创建像素缓冲区
using var bitmap = new SKBitmap(imageInfo);
// 复制像素数据到bitmap
// bitmap.SetPixels(yourPixelArray);

额外说明

如果你之前依赖System.Drawing相关API,也可以尝试安装System.Drawing.Common NuGet包,它在.NET Standard 2.0上有有限支持,但要注意:该包在非Windows平台(如Linux Azure Functions)存在兼容性问题,微软已标记其为Windows专属,长期来看还是推荐使用前面提到的跨平台库更稳妥。

内容的提问来源于stack exchange,提问作者nor0x

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:07:42