Я пытаюсь смешать существующее изображение с другим IImageProvider
, которое применяет Effect
. Я заметил, что есть несколько Effect
s, которые бросают InvalidArgumentException, такие как Auto Enhance
и Auto Levels
. Многие другие Effect
s, такие как эффект Antique
, не выбрасывают эту ошибку.Lumia Imaging SDK 3.0 Смешивание эффекта AutoEnhance и другого источника throw 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 или что-то, но я не могу понять, что я в сообщении об ошибке отсутствует. Я пробовал использовать несколько перегрузок, но все равно не пошел. Есть идеи?
Протестируйте свой код, я не могу воспроизвести вашу проблему ... Не могли бы вы предоставить более подробную информацию? Или вы могли бы предоставить образец? –
Привет @Grace Фэн. Я использую образец EditShowcase из Lumia Imaging SDK GitHub. Я получил эффектBackground с помощью 'IImageProvider effectBackground = (SelectedEffect.GetEffectAsync (imageProcessorRenderer.M_Source, imageProcessorRenderer.M_SourceSize, imageProcessorRenderer.RenderSize)). Результат:« Я думаю, что возвращаемое значение вызывает проблему во время процесса смешивания. Потому что когда я сначала его отформатирую в SoftwareBitmap, а затем смешаю, ошибка не была поднята. – PutraKg
Да, так как вы не размещали код вашего 'effectBackground', я сначала его отобразил' SoftwareBitmap', именно поэтому я не могу воспроизвести вашу проблему. В этом случае я буду рыть. –