Обнаружение, если файлом изображения PNG является Прозрачное изображение?

Я ищу способ быстро определить, имеет ли изображение PNG прозрачные функции. Таким образом, полупрозрачна ли какая-либо часть изображения или отображает фон всегда. Кто-либо каждый знает простой способ обнаружить это?

ОБНОВЛЕНИЕ: хорошо, есть ли менее сложный путь затем для вытаскивания спецификации PNG и взламывающий код?

17
задан Mechanical snail 9 September 2011 в 21:03
поделиться

2 ответа

Почему бы просто не перебрать все пиксели изображения и не проверить их альфа-значения?

    bool ContainsTransparent(Bitmap image)
    {
        for (int y = 0; y < image.Height; ++y)
        {
            for (int x = 0; x < image.Width; ++x)
            {
                if (image.GetPixel(x, y).A != 255)
                {
                    return true;
                }
            }
        }
        return false;
    }
18
ответ дан 30 November 2019 в 13:27
поделиться

Я до сих пор не совсем понимаю вопрос, но если вы просто хотите проверить, может ли данное изображение использовать функции прозрачности, вы можете использовать этот код:

Image img = Image.FromFile ( "...", true );
if ( (img.Flags & 0x2) != 0)
{
}

Хотя это не поможет вам определить, действительно ли данный файл png использует прозрачные функции, он укажет, что он имеет тип цвета 4 или 6 (оба поддерживают прозрачность) в соответствии со спецификацией файла png.

4
ответ дан 30 November 2019 в 13:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: