我试图融合现有的图像与另一个IImageProvider
已应用Effect
。我注意到有几个Effect
s会抛出InvalidArgumentException,例如Auto Enhance
和Auto Levels
。许多其他Effect
s如Antique
效果不会引发此错误。Lumia Imaging SDK 3.0混合AutoEnhance效果和其他源抛出InvalidArgumentException
我的代码:
. . .
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();
提出也许我需要设置像IMAGESIZE什么的一些参数,但我想不出我什么从错误消息中缺少。我试过使用几个重载,但仍然没有去。有任何想法吗?
刚刚测试过您的代码,我无法重现您的问题......您能否提供更详细的信息?或者你能否提供样品? –
Hi @Grace Feng。我使用的是Lumia Imaging SDK GitHub的EditShowcase示例。我使用'IImageProvider effectBackground =(SelectedEffect.GetEffectAsync(imageProcessorRenderer.M_Source,imageProcessorRenderer.M_SourceSize,imageProcessorRenderer.RenderSize))获得了effectBackground结果;'我认为在混合过程中返回值会导致问题。因为当我首先将它渲染到SoftwareBitmap然后混合它时,错误不会引发。 – PutraKg
是的,因为您没有发布'effectBackground'的代码,所以我首先将它提交给'SoftwareBitmap',这正是我无法重现您的问题的原因。我会继续挖掘这种情况。 –