首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

见鬼了, 一张15*15的纯白色小图片, 放大N倍, 没有一个黑点,但是遍历时,却发现有像素为黑色,该如何解决

2012-04-11 
见鬼了, 一张15*15的纯白色小图片, 放大N倍, 没有一个黑点,但是遍历时,却发现有像素为黑色真他妈的见鬼了,

见鬼了, 一张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容易出错;

热点排行