当我用GetPixel()
读取图像时,颜色值始终为黑色。我的图像是png图像。
我之前尝试将图片转换为位图,但没有成功。
我相信哪个问题不是我的代码,因为我是否在Paint中打开png图像并且只保存它。代码正确读取图像。
我像下面一样加载图片
myImage = new Bitmap(fileName);
我需要在这里阅读图片
private void LoadImageMap(Bitmap value){
for (int col = 0; col < value.Width; col++)
{
for (int row = 0; row < value.Height; row++)
{
var color = value.GetPixel(col, row);
var color总是黑色。
答案 0 :(得分:1)
PNG图像有透明度,当像素为完全透明度GetPixel()
时,结果为RGB颜色值为零。
然后我的代码需要一个if
来验证这种情况。
解决方案就像吼叫:
var color = value.GetPixel(x, y);
if(color.A.Equals(0))
{
color = Color.White;
}
PNG使用ARGB颜色,其中A代表alpha通道,alpha是否为零,此像素具有完全透明度。
答案 1 :(得分:0)
由于您将位图传递给代码,因此在调用GetPixel
时需要实际使用该变量。此外,在这种情况下,不需要ref
关键字。
private void LoadImageMap(Bitmap value)
{
for (int col = 0; col < value.Width; col++)
{
for (int row = 0; row < value.Height; row++)
{
var color = value.GetPixel(col, row);
}
}
}