我試圖融合現有的圖像與另一個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',這正是我無法重現您的問題的原因。我會繼續挖掘這種情況。 –