gpt4 book ai didi

c# - 确定图像中是否使用了 Alpha channel

转载 作者:可可西里 更新时间:2023-11-01 08:03:20 26 4
gpt4 key购买 nike

当我将图像引入我的程序时,我想确定是否:

  1. 他们有一个 alpha channel
  2. 如果使用该 alpha channel

#1 使用 Image.IsAlphaPixelFormat 非常简单。对于 #2,除了遍历每个像素之外,是否有一种简单的方法可以确定是否至少有一个像素具有使用的 alpha channel (即设置为其他值而不是255)?我只需要返回一个 bool 值,然后我将决定是将其保存为 32 位还是 24 位。

更新:我发现 ImageFlags.HasTranslucent应该为我提供我正在寻找的东西 - 不幸的是,它根本不起作用。例如,具有至少 66 个 alpha channel (半透明)的像素格式的 PNG 继续报告 False(用法:if((img.Flags & ImageFlags.HasTranslucent) == 4) ...;)。我测试了所有类型的图像,包括 alpha 值 >0 和 <255 的 .bmp,它仍然报告 False。有人用过这个并且知道它在 GDI+ 中是否有效?

最佳答案

您不必遍历每个像素(当然可以,但这取决于图像)。设置为遍历所有像素,但当您发现 alpha 值不是 255 时,使用以下伪代码跳出循环:

bool hasAlpha = false;
foreach (var pixel in image)
{
hasAlpha = pixel.Alpha != 255;
if (hasAlpha)
{
break;
}
}

您只需检查没有任何 alpha 的图像的所有像素。对于确实有 alpha 的图像,这会很快爆发。

关于c# - 确定图像中是否使用了 Alpha channel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3064854/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com