[求解] 怎么样用二进制打开一个图片文件,存储到数组中,然后再从数组中还原出图片!

nanshenvip 2006-05-15 11:05:09
怎么样用二进制打开一个图片文件,存储到数组中,然后再从数组中还原出图片!谢谢您了
...全文
356 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
嗷嗷叫的老马 2006-05-17
  • 打赏
  • 举报
回复
汗...........来迟了...........

-_-b
nanshenvip 2006-05-16
  • 打赏
  • 举报
回复
各位 帮帮忙了
of123 2006-05-16
  • 打赏
  • 举报
回复
简单:
dim arr() as byte
open "c:\my documents\test1.jpg" for binary as #1
redim arr(lof(1))
get #1,,arr
close #1

open "c:\my documents\test2.jpg" for binary as #1
put #1,,arr
close #1

Picture1.Picture = LoadPicture("c:\my documents\test2.jpg")
nanshenvip 2006-05-16
  • 打赏
  • 举报
回复
各位,我可以提供更多的分数,谢谢了
嗷嗷叫的老马 2006-05-15
  • 打赏
  • 举报
回复
呵呵,好象楼上几位的意思都不是楼主所问的吧?

我觉得楼主是想在内存中直接操作位图格式吧?
viena 2006-05-15
  • 打赏
  • 举报
回复
以下是我很久以前写的二进制文件复制的类的代码
Byte数组作为缓冲区,打开两个文件,一个读,一个写
楼主可以参考一下

Option Explicit

Public Event FileProgress(ByVal sngPercentage As Single)
Private mbCancel As Boolean

Public Sub DoCopy(ByVal strSourFile As String, ByVal strDestFile As String, Optional ByVal lngBufferSize As Long = 32768)
On Error GoTo errHande
ReDim abytBuffer(lngBufferSize - 1) As Byte

Dim lngFileSize As Long, lngRemain As Long '文件长度字节数,剩余的字节数
Open strSourFile For Binary Access Read As #1
Open strDestFile For Binary Access Write As #2
lngFileSize = LOF(1)
lngRemain = lngFileSize

While lngRemain > 0
If lngRemain < lngBufferSize Then
lngBufferSize = lngRemain
ReDim abytBuffer(lngBufferSize - 1)
End If
Get #1, , abytBuffer
Put #2, , abytBuffer
lngRemain = lngRemain - lngBufferSize
RaiseEvent FileProgress((lngFileSize - lngRemain) / lngFileSize)
DoEvents
If mbCancel Then
Err.Raise vbObjectError + 513, "CopyFile", "用户取消操作"
End If
Wend
Close #1
Close #2
Erase abytBuffer
RaiseEvent FileProgress(1)
Exit Sub
errHande:
MsgBox Err.Description & ",文件复制没有完成"
Close #1
Close #2
Erase abytBuffer
If Len(Dir(strDestFile)) > 0 And Len(strDestFile) > 0 Then Kill strDestFile
End Sub

Public Sub cancel()
mbCancel = True
End Sub
tripman 2006-05-15
  • 打赏
  • 举报
回复
图片文件存储到数组中的目的是什么?这样会占用系统资源
如果只是存储图片文件可以用以下方法:

Dim Pic() As StdPicture

Private Sub Form_Load()
ReDim Pic(0)
End Sub

Private Sub Cmdload_Click()
CommonDialog1.Filter = "Picture Files (*.jpg;*.gif;*.bmp;*.ico)|*.jpg;*.gif;*.bmp;*.ico|JPEG image(*.jpg,*.jpeg)|*.jpg;*.jpeg|Window bitmap(*.bmp)|*.bmp|GIF image(*.gif)|*.gif|其他(*.*)|*.*"
CommonDialog1.CancelError = True
On Error GoTo Cancel
CommonDialog1.ShowOpen
ReDim Preserve Pic(UBound(Pic) + 1)
Set Pic(UBound(Pic)) = LoadPicture(CommonDialog1.FileName)
Exit Sub
Cancel:
Exit Sub
End Sub

'还原图片:
Private Sub ShowPic(i As Integer)
Set Picture1.Picture = Pic(i)
End Sub
nanshenvip 2006-05-15
  • 打赏
  • 举报
回复
我的说法是:用二进制打开文件(不是简单的存储路径)
tripman 2006-05-15
  • 打赏
  • 举报
回复
数组中存储图片文件的路径
nanshenvip 2006-05-15
  • 打赏
  • 举报
回复
谢谢楼上的 你能帮助我吗?

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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