Lumia Imaging SDK 3.0 Blending AutoEnhance Effect 和其他来源抛出 InvalidArgumentException

Lumia Imaging SDK 3.0 Blending AutoEnhance Effect and other source throw InvalidArgumentException

我正在尝试将现有图像与另一个应用了 EffectIImageProvider 混合。我注意到有几个 Effect 会抛出 InvalidArgumentException,例如 Auto EnhanceAuto Levels。许多其他 Effects 例如 Antique 效果不会抛出此错误。

我的代码:

    . . .
SoftwareBitmapImageSource streamTextBitmapForeground = new SoftwareBitmapImageSource(normalizedTextSoftwareBitmap);

//using (SharpnessEffect sharpenText = new SharpnessEffect(streamTextBitmapForeground, SettingsPart.SharpnessLevel))
using (BlendEffect blendEffect = new BlendEffect(effectBackground, streamTextBitmapForeground, BlendFunction.Normal, 1.0f))
using (BitmapRenderer bitmapRenderer = new BitmapRenderer(blendEffect))
{

    Bitmap bitmap = await bitmapRenderer.RenderAsync();
    byte[] pixelBuffer = bitmap.Buffers[0].Buffer.ToArray();

    using (var stream = new InMemoryRandomAccessStream())
    {
        var pngEncoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, stream).AsTask().ConfigureAwait(false);

        pngEncoder.SetPixelData(BitmapPixelFormat.Bgra8,
            BitmapAlphaMode.Straight,
            (uint)bitmap.Dimensions.Width,
            (uint)bitmap.Dimensions.Height,
            displayInformation.LogicalDpi,
            displayInformation.LogicalDpi,
            pixelBuffer);

        await pngEncoder.FlushAsync().AsTask().ConfigureAwait(false);

        . . .

错误出现在 Bitmap bitmap = await bitmapRenderer.RenderAsync();

也许我需要设置一些参数,例如图像大小或其他参数,但我无法弄清楚错误消息中缺少什么。我试过使用几个重载但还是不行。有什么想法吗?

感谢您报告此问题。

David Božjak 所述,GPU 处理存在一些已知问题,您可以尝试将 RenderOptions 设置为仅 CPU。

using (BitmapRenderer bitmapRender = new BitmapRenderer(blendeffect))
{
          bitmapRender.RenderOptions = RenderOptions.Cpu;
          Bitmap bitmap = await bitmapRender.RenderAsync();
}

已在 Win10 14393 PC 上验证。