把picturebox的坐标和rgb值写入文件中

lanse20_2010 2010-10-05 09:49:58
如题,for(x坐标)
for(y坐标)
把坐标和像素值写入文件,一行一个坐标。
write方法有没有说就是在原来的基础上继续写,然后是不是要建立一个数组存放RGB值,但是感觉一个好像不够,要用三个数组吗?
请大家指点一下,谢谢
...全文
218 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
lanse20_2010 2010-10-06
  • 打赏
  • 举报
回复
没事了,是我的错误。
宝_爸 2010-10-06
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 lanse20_2010 的回复:]

C# code

Color pixel = bitmap.GetPixel(j, i);


您好现在又碰到问题了,就是color里的pixel的i,j值是不是必须得小于256(我图片格式是256*256的)。但是现在是我的i,j不是从0开始,也就是当程序运行到255的时候就会停止,剩下的像素值就不会读出来。
这个怎么解决啊?
非常感谢您!!!
[/Quote]

为什么不从0开始读呢?
参考我的代码,使用bitmap.Height和bitmap.Width作为循环终止的标志,因此不论图像的尺寸是什么都没有问题。
lanse20_2010 2010-10-06
  • 打赏
  • 举报
回复

Color pixel = bitmap.GetPixel(j, i);

您好现在又碰到问题了,就是color里的pixel的i,j值是不是必须得小于256(我图片格式是256*256的)。但是现在是我的i,j不是从0开始,也就是当程序运行到255的时候就会停止,剩下的像素值就不会读出来。
这个怎么解决啊?
非常感谢您!!!
宝_爸 2010-10-06
  • 打赏
  • 举报
回复
我这里没有碰到问题啊,我是输出到控制台,你改成写文件就可以了。


private void Form1_Load(object sender, EventArgs e)
{
pictureBox1.Load(@"C:\Documents and Settings\scai\My Documents\My Pictures\black cat.jpg");
}

private void button1_Click(object sender, EventArgs e)
{
Bitmap bitmap = pictureBox1.Image as Bitmap;
if (bitmap != null)
{
for (int i = 0; i < bitmap.Height; i++)
{
for (int j = 0; j < bitmap.Width; j++)
{
Color pixel = bitmap.GetPixel(j, i);

Console.WriteLine(pixel.R.ToString() + ", " + pixel.G.ToString() + ", " + pixel.B.ToString());
}
}
}
}
lanse20_2010 2010-10-05
  • 打赏
  • 举报
回复
mybm 是我画图时候创建的位图,然后用Bitmap bitmap=(Bitmap)this.pictureBox1.Image;
的时候程序会报错,不知道为什么
那我应该在哪里写呢
宝_爸 2010-10-05
  • 打赏
  • 举报
回复
picturebox的paint会被经常调用的,最好别在这里写文件。

另外代码贴的不全,mybm是什么?
justiceyves 2010-10-05
  • 打赏
  • 举报
回复
牛人 都在能村!
lanse20_2010 2010-10-05
  • 打赏
  • 举报
回复

for (int xa = this.pictureBox1.Location.X; xa < this.pictureBox1.Width; xa += 1)
{
for (int ya = this.pictureBox1.Location.Y; ya <this.pictureBox1.Height; ya += 1)
{
swr.Write("坐标为{0} {1}", xa, ya);
//afil.Write (Convert .ToString (xa),)
Color pixelcolor = mybm.GetPixel(xa, ya);
byte red = pixelcolor.R;

byte green = pixelcolor.G;
byte blue = pixelcolor.B;
swr.Write("像素值R为{0},G为{1},B为{2}",Convert.ToInt16 (red ),Convert.ToInt16 (green ),Convert.ToInt16 (blue ));
swr.Write(Environment.NewLine);
}
swr.Write (Environment .NewLine );
}
swr .Close ();
afil .Close();

然后现在的问题是这个程序太失败了,我在picturebox的paint里写的,以前运行的时候还可以把图像显示出来,现在坐标倒是出来了,就是图片显示不出来了。
大家帮忙看看上面这个程序应该怎么优化一下啊,是不是不能写到paint里面啊。谢谢
宝_爸 2010-10-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wuyq11 的回复:]
PictureBox图象转成Bitmap类型,再用Bitmap.GetPixel获取Bitmap中指定像素的颜色
private void pictureBox1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
Bitmap bitmap=(Bitmap)this.pictureBox1.Image;
Color color=bitmap.GetPixel(e.X, e.Y);
this.textBox1.Text=color.Name;
}
文件操作使用File.AppendAllText("");
streamwriter
[/Quote]

晚了一步
wuyq11 2010-10-05
  • 打赏
  • 举报
回复
PictureBox图象转成Bitmap类型,再用Bitmap.GetPixel获取Bitmap中指定像素的颜色
private void pictureBox1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
Bitmap bitmap=(Bitmap)this.pictureBox1.Image;
Color color=bitmap.GetPixel(e.X, e.Y);
this.textBox1.Text=color.Name;
}
文件操作使用File.AppendAllText("");
streamwriter
KnowKjava 2010-10-05
  • 打赏
  • 举报
回复
没做过
无乐不作111 2010-10-05
  • 打赏
  • 举报
回复
学习了
支持一个
zhoujk 2010-10-05
  • 打赏
  • 举报
回复
到我的资源去下载一个 数组与位图的转换函数来试试,然后按行将数据写入文件即可

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧