从流中提取jpg图像 ( 积分: 100 )

  • 主题发起人 主题发起人 lilor
  • 开始时间 开始时间
L

lilor

Unregistered / Unconfirmed
GUEST, unregistred user!
已知流中有一定数目的jpg图像,其大小和在流中的位置未知,如何以最快的速度把它们找出来?
我现在是用Readbuffer循环读取一定大小的数据,然后在其中查找文件头FF D8,然后查找文件尾FF D9来实现的,感觉速度还不够快。
 
已知流中有一定数目的jpg图像,其大小和在流中的位置未知,如何以最快的速度把它们找出来?
我现在是用Readbuffer循环读取一定大小的数据,然后在其中查找文件头FF D8,然后查找文件尾FF D9来实现的,感觉速度还不够快。
 
关注中,我也有此需求,期待高手。。。
 
在没有固定位置的情况下,我认为你这是最好的解决方法
 
根据 jpeg 的文件格式 sdk 查找 jpeg 的辨识串啊,比如,文件头是:
data: array[0..9] of byte = (
$FF, $D8, $FF, $E0, $00, $10, $4A, $46, $49, $46
);
关于具体的文件格式可以参考 delphi 7 安装光盘的 /Info/Extras/Jpeg/jpeg.pas 和以下连接:
http://dev.csdn.net/article/22/22948.shtm
 
写的时候,前边写一个图片的长度,下边紧接着写图片内容。读的时候当然会快了。
用辨识串也不会很快的,另外你也不能保证图片中不会出现这个辨识串组成的字节流。
搂住可真会节约空间的!
 
楼上正解,就像读很多二进制文件一样,都是先放大小,再读的,反正是你自己的格式,省去了搜索的时间
 
文件不是我创建的,是一个分析仪器所带的软件生成的,文件数据格式未知,我要分析其格式,然后从其中读出图片,实验参数等信息。我现在只能把缓冲区开大,从70M大小的文件中提取300幅图大概需要7-8秒钟,如果文件再大,需要的时间就比较长。我第一次读取之后创建一个索引文件,把jpg文件的位置及其大小保存下来,下次再读取的时候就很快了。
 
我想,有可能时间浪费在存储上了。
你可以看看存储上能不能提高速度?
 
流,无非不过是封装了一块内存,以及对它的操作方法
 
看来我要把问题改一下:
给你一个文件,其中包含有一定数目的jpg图像,其大小和位置未知,如何以最快的速度把它们找出来?
 
后退
顶部