У меня есть несколько небольших прозрачных gif-изображений (меньше 100x100), и я написал следующий код для перебора всех пикселей, чтобы получить значения RGB:
private void IteratePixels(string filepath)
{
string dataFormat = String.Empty;
Bitmap objBitmap = new Bitmap(filepath);
int counter = 0;
for (int y = 0; y < objBitmap.Height; y++)
{
for (int x = 0; x < objBitmap.Width; x++)
{
Color col = objBitmap.GetPixel(x, y);
dataFormat = String.Format("{0} => Red: {1:x} Green: {2:x} Blue: {3:x}",
counter++, col.R, col.G, col.B);
System.Diagnostics.Debug.WriteLine(dataFormat);
// Perform an operation on the Color value here.
// objBitmap.SetPixel(x, y, col);
}
}
}
Код работает (хотя и медленно из-заGetPixel и форматирование строк) но больше всего меня удивило то, что на выходе сообщается, что прозрачные пиксели черные! Интересно, почему?
0 => Красный: 0 Зеленый: 0 Синий: 0
1 => Красный: 0 Зеленый: 0 Синий: 0 ...
Теперь, скажем, еслиУ меня было прозрачное gif-изображение с черным фоном, покрывающим 25% площади изображения. Как узнать, является ли пиксель прозрачным или черным?