VB 如何将数组保存为图像

我有一个三维数组,比如PicData(1toWidth,1toHeight,1to3),其中比如PicData(x,y,1)代表第(x,y)坐标上该像素点的Red值,Pi... 我有一个三维数组,比如PicData(1 to Width, 1 to Height, 1 to 3),其中比如 PicData(x,y,1)代表第(x,y)坐标上该像素点的Red值,PicData(x,y,2)代表第(x,y)坐标上该像素点的Green值,PicData(x,y,3)代表第(x,y)坐标上该像素点的Blue值,该数组已经填充得有数据了。

如果使用图片框Pic来将数组中的数据保存为图片文件到硬盘上,可以借助比如SetVPexil Pic.hdc ,x,y,RGB(PicData(x,y,1),PicData(x,y,2),PicData(x,y,3)) 或者其他方法,将数组数据画到图片框上,然后再保存为图像文件即可。另外,VB的图片框,当图片文件的长宽像素大于四五千像素时,图片框在AutoRedraw属性为True时,会发生无法创建AutoRedraw对象,而无法处理了。 所以,希望不借助图片框,而采用GDI或者在内存中直接处理完毕就保存为图像文件。
但现在想将该数组直接保存为图片文件到硬盘上,而不需要借助PictureBox,如何才能办到呢?
展开
 我来答
涐吢铱舊囿儚
2014-02-17 · TA获得超过488个赞
知道小有建树答主
回答量:512
采纳率:100%
帮助的人:586万
展开全部
楼主,光有“图像数据”还不够的,
还要有“图像宽度和高度”这两个参数信息,和“色深信息” 才行。
并且,在VB6.0中,你的“三维数组”不能直接使用,还得转换成“一维”的数组数据。
因为VB6.0用的数组是“安全数组”,它的各维存储顺序跟系统中用到的“真数组”不兼容的。
有了我前面说的那些“信息”后,并且把数据格式转换后,
 就可以用GDI+的一系列API来处理了,不用再通过PictureBox,
 这样图片的尺寸大小(宽度或高度),基本上不受限制了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
张胜东已存在
2014-02-15 · TA获得超过352个赞
知道小有建树答主
回答量:306
采纳率:100%
帮助的人:148万
展开全部
Bmp的存储方式就是直接存储每个点的rgb值,你去百度一下bmp,到时候写个文件头,然后把rgb按好象是8进制存进去就可以了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
WM_THU
2014-02-15 · TA获得超过7164个赞
知道大有可为答主
回答量:4285
采纳率:80%
帮助的人:3946万
展开全部
建议采用最简单的pnm图像格式,自己生成就可以。
先写一个文件头,然后把像素数据写入就可以了。比bmp简单的多。
格式说明可以参考:
http://blog.csdn.net/wellerzhao/article/details/11912739
http://netpbm.sourceforge.net/doc/pgm.html
追问
pnm格式不是常用的格式呀。
追答
windows下好像不多见,例如其实人人照片查看器等软件都支持它,所以没有你想象的那么不常用。更何况,在linux的世界里这绝对是常用格式。
当然你可以按另外一位网友说的做bmp,原理一样,格式稍麻烦点。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dualtime819
2014-02-15 · 超过14用户采纳过TA的回答
知道答主
回答量:50
采纳率:0%
帮助的人:39.6万
展开全部
从网络读取的图片byte数组转成图片代码如下
Dim mStream As New IO.MemoryStream
mStream.Write(b, 0, b.length) '这里b就是你的一维数组了
Dim Img As New Bitmap(mStream)
mStream.Close()
mStream.Dispose()
追问
我的不是一维,而是三维数组的呀。
另外,不是vb.net,而是vb6呢。要保存为文件放到硬盘上呀,你这并没有保存动作呀。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式