C#中如何得到图片所有像素

请问各位高手,在C#中如何获取一张图片的所有像素值,并把这些值保存或打印出来?请高手指教,最好给一段代码实例,谢谢!... 请问各位高手,在C#中如何获取一张图片的所有像素值,并把这些值保存或打印出来?请高手指教,最好给一段代码实例,谢谢! 展开
 我来答
tn瓶邪
推荐于2016-05-31 · TA获得超过1882个赞
知道小有建树答主
回答量:610
采纳率:98%
帮助的人:112万
展开全部
步骤如下:
(1)在.NET中创建一个窗体,加入pictureBox控件。设置其Image为空,SizeMode属性设为AutoSize;
(2)加入一个OpenFileDialog控件,一个button控件,用于打开图片文件;
(3)加入三个textBox控件,用于表示RGB三个颜色的值。
(4)定义一个私有变量pick为布尔值,来表示是否拾取图片上的颜色。并在Form1_Load中将其设置为false;再加入一个public Bitmap myBitmap用来进行函间的访问。
(5)为button控件增加click事件,该事件主要是完成读入文件和对pictureBox控件的初始化:
(6)为pictureBox控件增加mousemove事件:  
  代码如下:
  Step1:设置bool值pick并初始化几个变量
  public bool pick;
  public Bitmap myBitmap;
  private void Form1_Load(object sender, EventArgs e)
  {
  pick = false;
  }
厉高扬6M
推荐于2016-02-18 · TA获得超过137个赞
知道答主
回答量:96
采纳率:0%
帮助的人:59.8万
展开全部
二楼的方法效率很低的,读一张稍大的图片可能需要十几秒,给你一个效率比较高的方法。
public static short[][] GetPixs(Bitmap bitmap)
{
int height = bitmap.Height;
int width = bitmap.Width;
byte tempB, tempG, tempR;
short[][] spOriginData = new short[height][];
for (int i = 0; i < height; i++)
{
spOriginData[i] = new short[width];
}

BitmapData dataOut = bitmap.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
int offset = dataOut.Stride - dataOut.Width * 3;
try
{
unsafe
{
byte* pOut = (byte*)(dataOut.Scan0.ToPointer());

for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
tempB = pOut[0];
tempG = pOut[1];
tempR = pOut[2];
double data=0.31 * tempR + 0.59 * tempG + 0.11 * tempB;
if (data > 255)
spOriginData[y][x] = 255;
else
if (data < 0)
spOriginData[y][x] = 0;
else
spOriginData[y][x] = (short)data;
pOut += 3;
}
pOut += offset;
}
bitmap.UnlockBits(dataOut);
}
}
catch
{
}
return spOriginData;
}
我毕业设计的时候用的
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lliue
2009-07-13 · 超过22用户采纳过TA的回答
知道答主
回答量:105
采纳率:0%
帮助的人:0
展开全部
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;

}
打印rgb的值就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
szachina
2009-07-13 · 超过24用户采纳过TA的回答
知道答主
回答量:149
采纳率:0%
帮助的人:81.8万
展开全部
不知道这个是有什么用处
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式