1

Я пытаюсь создать более крупное изображение, повторяя черепицу нескольких небольших изображений. Как это сделать в C#/WP8.1?Слияние двух и более изображений в WP 8.1 RT

Я попытался объединить байтовые массивы (простое добавление не работает), попытался отобразить на XAML (не работает, получить линии разделения с некоторыми изображениями), попытался с WriteableBitmapEx (слишком медленно, требуется поток пользовательского интерфейса для обработки) и два метода Lumia Imaging SDK (JpegTools и BlendEffect), но оба производят разделительные линии.

С учетом сказанного, существует ли какой-либо другой способ, который может использоваться для объединения двух или более изображений?

Я хотел бы изучить возможность копирования байтового уровня; как мне это сделать? Как объединить два массива изображений и создать одно крупное изображение?

EDIT: Вопрос только для WP 8.1 RT, а не для общей платформы C#.

+0

Вы заглянули в Emgu (OpenCV .Net wrapper)? Его довольно легко (и быстро) загружать изображение, заданное по пути, и перебирать его как 'byte []'. – KDecker

ответ

0

Вы можете использовать WriteableBitmapEx для загрузки исходного изображения в WB, а затем использовать WriteableBitmapEx, чтобы получить доступ к свойству buffer/Pixels и запустить слияние в фоновом потоке. Итак, получите массив Pixels из всех WB, которые вы хотите объединить, а затем используйте массив Pixels и объедините их. Вы даже можете использовать быстрый Buffer.BlockCopy или его эквивалент на WinRT. После того, как вы окончательно объединили буфер массива, создайте новый WB с правильным агрегированным измерением и установите его буфер Pixels в объединенный массив. Вам нужно получить доступ к потоку пользовательского интерфейса при создании нового WB.

+0

Я использовал 'WriteableBitmapEx.Blit()' для многократного слияния изображений, но для 'Blit()' требуется также поток пользовательского интерфейса. Кроме того, я не совсем понял, как объединить изображения, используя буфер байтов. Не могли бы вы немного разобраться? – Flipper

+0

ОК, я добавил несколько деталей. Вам не придется использовать Blit() вообще. Просто используйте WBX, чтобы получить буфер Pixels исходных изображений более простым способом, объединить буферы Pixels вручную, а затем создать новый WB на основе этого. –

Смежные вопросы