C#里的图像变化

ernestm 2004-11-02 11:50:48
我想问一下Visual.C#有没有什么控件能够把图像用一个二维数组或别的代替,然后又能够把二维数组转化为图像
...全文
256 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
E0888 2004-11-22
  • 打赏
  • 举报
回复
推荐一个C#群:6613147,欢迎C#热心的C#爱好者加入(注:如果只是想潜水的,请不要加。)
haiwangstar 2004-11-22
  • 打赏
  • 举报
回复
要注意的是,在你操作从流创建的图像时,要保持流打开,否则会异常。。
haiwangstar 2004-11-22
  • 打赏
  • 举报
回复
其实非常简单。我加了注释那几行就应该是你要的。
就是把一个图像写入流,和从一个流中创建图像。如果你想要图像的字节数组,取流的GetBuffer即可。。

下面的代码是操作位图字节数据的。
wsjdx 2004-11-22
  • 打赏
  • 举报
回复
haiwangstar 2004-11-22
  • 打赏
  • 举报
回复
Bitmap bit = sourceImage as Bitmap; //
if(bit == null) //如果原图不是位图。
{
MemoryStream s = new MemoryStream();
sourceImage.Save(s,ImageFormat.Bmp);//写入流。
bit = (Bitmap)Image.FromStream(s); //从流中读取位图。
}
BitmapData bmData = bit.LockBits(new Rectangle(0, 0, bit.Width, bit.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
int stride = bmData.Stride;
System.IntPtr Scan0 = bmData.Scan0;
int r=0, g=0, b=0;
float v=0;
unsafe
{
byte * p = (byte *)(void *)Scan0;
int nOffset = stride - bit.Width*3;
for(int i=0;i<bit.Height;++i)
{
for(int x=0; x < bit.Width; ++x )
{
r = p[2];
g = p[1];
b = p[0];
v = r*0.299F + g*0.587F + b*0.114F + 0.3F;
hist[(byte)v]++;
p += 3;
}
p += nOffset;
}
}
bit.UnlockBits(bmData);
int total = 0;
for(int i=0; i!=256; i++)
{
if(hist[i]>total)
{
total = hist[i];
}
}

for(int i=0; i!=256; i++)
{
// values[i] = (int)((float)hist[i]/total*100);
values[i] = Math.Min(100,(hist[i]*1024/total));
}
newImageValue = true;
ernestm 2004-11-22
  • 打赏
  • 举报
回复
怎么没有人回答,帮帮忙嘛
ernestm 2004-11-11
  • 打赏
  • 举报
回复
我是个新手,您能不能给一个具体的例子(binarywriter把image的buffer写入流,
取的话用Image.From(xstream))给我,非常感谢!
kangxidadi 2004-11-10
  • 打赏
  • 举报
回复
位图格式图像本身就是二维的像素数组,用像素的x,y坐标就可以存取像素,如果非要用数组形式,可以自己写个类封装位图,用坐标做索引。

用流存图片,简单的做法是new 一个流对象,用binarywriter把image的buffer写入流,
取的话用Image.From(xstream)就行了。
ernestm 2004-11-10
  • 打赏
  • 举报
回复
还想问一下有没有什么组件能够对图象进行变形,像弯曲这一类的
ernestm 2004-11-10
  • 打赏
  • 举报
回复
自己将图像转换为二进制流,然后再还原成图像,能不能把这个方法具体说一下呀,谢谢
AhBian 2004-11-02
  • 打赏
  • 举报
回复
利用 Bitmap.GetPixel 和 Bitmap.SetPixel 方法可以实现楼主的要求.

但现成的组件好象没有。
「已注销」 2004-11-02
  • 打赏
  • 举报
回复
可以
xiaoslong 2004-11-02
  • 打赏
  • 举报
回复
up
_jfeng 2004-11-02
  • 打赏
  • 举报
回复
没有,自己将图像转换为二进制流,然后再还原成图像,是可以的
canoe_eyes 2004-11-02
  • 打赏
  • 举报
回复
gz
lidawen 2004-11-02
  • 打赏
  • 举报
回复
學習
520NET 2004-11-02
  • 打赏
  • 举报
回复
LG

111,092

社区成员

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

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

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