见鬼了, 一张15*15的纯白色小图片, 放大N倍, 没有一个黑点,但是遍历时,却发现有像素为黑色
真他妈的见鬼了,还让人睡觉不,真想摔电脑了!!!!
遍历图片的代码如下:
C# code
public bool CheckNoise(Bitmap bmp, int dgGrayValue)
{
bmp.Save("c:\\1.jpg"); // 保存到磁盘上以后, 并看不出有黑点
for (int x = 0; x < bmp.Width; x++)
{
for (int y = 0; y < bmp.Height; y++)
{
if (bmpobj.GetPixel(x, y).R < dgGrayValue)
{
bmp.Dispose();
bmp = null;
return true;
}
}
}
bmp.Dispose();
bmp = null;
return false;
}
传入的图片是白色的,图片不大, 15*15, 保存到C:\1.jpg以后, 在图片查看器, 或PS中放大到最大,也没发现有黑点, 但是遍历时, 却始终有那么一些像素的RGB为黑色, 即R=0,G=0,B=0, 哪个大哥能帮忙解释一下啊?
------解决方案--------------------
嘿嘿,jpg是有损压缩,不可靠,会不会是噪点的原因,用无损格式,比如png,bmp试试
不过jpg也至于傻成这样,而且你又用ps确认过
不过又没觉得你代码有什么问题
看来我也要睡不着了
------解决方案--------------------
if (bmpobj.GetPixel(x, y).R < dgGrayValue)
bmpobj是啥
------解决方案--------------------jpg是出现黑点的。
我以前用过一个jpg图片做背景图片,程序使用就发现黑点。
后来的解决办法是:
为了减少图片的尺寸,使用画图工具先做图片,然后拷贝另存为16色或者256色位图(就是bmp),就可以用了,大小比jpg还小。单色是不可以的。
供参考。
------解决方案--------------------不应该存为jpg
bmp.Save("c:\\1.jpg"); -> bmp.Save("c:\\1.bmp");
------解决方案--------------------不要用调试模式运行,调试的时候调用GetPixel容易出错;