ARGB в YUV && Цветовые пространства в .NET - PullRequest
1 голос
/ 17 мая 2011

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

  • Как конвертировать изображение между ARGB и YUV в c #? Я нашел формулы, описывающие преобразование RGB в YUV. Так что мне делать с альфа-каналом?
  • Существуют ли бесплатные / пробные библиотеки, которые поддерживают разные цветовые пространства? Или как мне реализовать это наилучшим образом?
  • Как мне представить 'Bitmap' как 2d массив с возможностью итерации по нему? Наследование - единственный способ достичь этого?

Это все еще)

Спасибо!

1 Ответ

2 голосов
/ 17 мая 2011

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

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

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

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

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

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

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