Lumia Imaging SDK 3.0 Blending AutoEnhance Effect 和其他来源抛出 InvalidArgumentException
Lumia Imaging SDK 3.0 Blending AutoEnhance Effect and other source throw InvalidArgumentException
我正在尝试将现有图像与另一个应用了 Effect
的 IImageProvider
混合。我注意到有几个 Effect
会抛出 InvalidArgumentException,例如 Auto Enhance
和 Auto Levels
。许多其他 Effect
s 例如 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 上验证。
我正在尝试将现有图像与另一个应用了 Effect
的 IImageProvider
混合。我注意到有几个 Effect
会抛出 InvalidArgumentException,例如 Auto Enhance
和 Auto Levels
。许多其他 Effect
s 例如 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 上验证。