- ·上一篇文章:内存知识库主板与内存的关系
- ·下一篇文章:四川麻将打七对问题的个人看法
图片逐像素处理的速度比较!
这篇文章将介绍对图片进行逐个像素的处理时的方法,由于方法的不同将会造成处理的速度的巨大区别。
以下通过一个例子来说明各种方法的处理速度:
我们将一幅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方法设置目标图片各点的像素颜色。
以下通过一个例子来说明各种方法的处理速度:
我们将一幅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方法设置目标图片各点的像素颜色。


