ARGB в YUV && Цветовые пространства в .NET

Я заметил, что структура Color из System.Drawing представляет цвет в цветовом пространстве ARGB. Итак, есть некоторые вопросы:

  • Как преобразовать изображение между ARGB и YUV в С#? Я нашел формулы, описывающие преобразование RGB в YUV. Итак, что мне делать с альфа-каналом?
  • Существуют ли бесплатные/пробные библиотеки, поддерживающие разные цветовые пространства? Или как мне реализовать это самому наилучшим образом?
  • Как представить «Растровое изображение» в виде двумерного массива с возможностью его повторения? Является ли наследование единственным способом добиться этого?

Это пока все)

Спасибо!


person lexeme    schedule 16.05.2011    source источник


Ответы (1)


Вы не можете напрямую преобразовать argb в YUV (без потерь), потому что YUV не содержит альфа-информации.

В зависимости от того, что вы хотите сделать с цветом после того, как у вас есть следующие возможности:

  • вы просто вырезаете альфу и отбрасываете прозрачность

  • вы конвертируете в AYUV, который также содержит альфа-канал

преобразование между цветовыми пространствами

Одна из возможностей преобразовать растровое изображение в byte[] — это записать его в поток памяти и прочитать по кусочкам.

MemoryStream stream = new MemoryStream();
bitmap.Save(stream, ImageFormat.Bmp);
byte[] data = stream.ToArray();
person fixagon    schedule 16.05.2011