在C#中如何得到一张图片的所有像素值

来源:百度知道 编辑:UC知道 时间:2024/07/04 11:23:15
请问各位高手,在C#中如何获取一张图片的所有像素值,并把这些值保存或打印出来?我现在有个方法,但是读一张稍大的图片需要很长时间,这个根本解决不了项目的难题,这个方法如下:
Bitmap oldbitmap = new Bitmap(url);
int Height = oldbitmap.Height;
int Width = oldbitmap.Width;
Bitmap newbitmap = new Bitmap(Width, Height);
Color pixel;
for (int x = 0; x < Width-1; x++)
{
for (int y = 0; y < Height-1; y++)
{
int r, g, b;
pixel = oldbitmap.GetPixel(x, y);

r = pixel.R;
g = pixel.G;
b = pixel.B;

}
请高手指教,你们谁还有一个效率高的方法,使读图时间尽量缩短,谢谢!
最好把得到的像素值储存在数组中,并对所以像素值进行比较大小,得出最大最小值像素值。

你那种方法可以说是最慢的,你可以使用指针,这是我用过的最快的方法,看看下面的文章吧,对你有帮助
http://hi.baidu.com/jackeyrain/blog/item/9f1803ea6b6660dbd439c93b.html

你可以这样做,逻辑上将图片分几个块,对应起几个线程分别计算,速度会快几倍罗!

jonnysuen 的思路貌似不对
多线程用于处理不确定时间的情况
而像楼主的问题总的时间复杂度的一定的,所以不管你用不用多线程最后还是要读取每个像素,也就是是说,根本没有起到较少时间复杂度的目的
楼主的问题只能从算法上解决,简单的for循环是不行的
可能需要用到矩阵算法等多媒体方面的知识,我不是很了解,期待高手~~~

你可以这样做,逻辑上将图片分几个块,对应起几个线程分别计算,速度会快几倍罗!