当前位置:有风信息港IT学院编程技术.net → 图片逐像素处理的速度比较!

图片逐像素处理的速度比较!

减小字体 增大字体 作者:有风IT学院  来源:有风信息港  发布时间:2008-1-13 8:54:16
这篇文章将介绍对图片进行逐个像素的处理时的方法,由于方法的不同将会造成处理的速度的巨大区别。

以下通过一个例子来说明各种方法的处理速度:

我们将一幅200×266像素的图片每个像素的RGB颜色中的R分量减少100,减少后小于0的按0计算。如图所示将图1转变成图2。

图片逐像素处理的速度比较javascript:window.open(this.src);" style="cursor: pointer;"/>


图片逐像素处理的速度比较javascript:window.open(this.src);" style="cursor: pointer;"/>


1. 使用Bitmap的GetPixel和SetPixel方法访问

public static Bitmap ProcessByPixel(Bitmap src)

{

Bitmap rs = new Bitmap(src.Width, src.Height);



for (int i = 0; i < src.Width; i++)

{

for (int j = 0; j < src.Height; j++)

{

//在这里对图片进行处理

Color color = src.GetPixel(i, j);

int red = (color.R - 100 < 0) ? 0 : color.R - 100;

color = Color.FromArgb(red, color.G, color.B);

rs.SetPixel(i, j, color);

}

}



return rs;

}

这种方法通过使用Bitmap类的GetPixel方法获得各点的像素颜色,处理后又通过SetPixel方法设置目标图片各点的像素颜色。

[1] [2] [3]  下一页