一种基于Android系统的缩略图存储方法和装置的制造方法

文档序号:9921814阅读:317来源:国知局
一种基于Android系统的缩略图存储方法和装置的制造方法
【技术领域】
[0001 ]本发明涉及Android系统技术领域,具体涉及一种基于Android系统的缩略图存储方法和装置。
【背景技术】
[0002]Android(中文名,安卓)系统,是一个以Linux为基础的开源的移动设备操作系统,主要应用于智能手机和平板电脑等智能终端设备中。Android系统采用SQLite数据库管理本地文件,SQLite是一款轻型的、关系型数据库。
[0003]图1是Android设备对本地数据管理的流程示意图。参见图1中的步骤Sll至步骤S15;步骤SI I,新增一个文件—步骤S12,将该文件插入到数据库—步骤S13,判断该文件是否为图片—是则,执行步骤S14通过线程创建普通缩略图(否则,结束流程)—步骤S15,通过线程创建微型缩略图。例如,当安装了Android系统的手机通过拍照或者其他方式新增了一张图片时,系统会创建线程生成两种缩略图,一种是尺寸相对较大的普通缩略图对应步骤S14;另一种是微型的缩略图对应步骤S15(本发明即是对这种微型缩略图存储方案的改进,下文中出现的缩略图指这种微型缩略图)。步骤S15中生成的微型缩略图的用途非常广泛。例如,在Android手机上的相机的拍照界面显示的最新一张图时使用,或者在第三方拍照软件拼图,以及设置即时通讯工具中用户头像等较小尺寸的图片的时候使用。
[0004]Android系统为了减少文件的碎片化以及提高访问速度,在存储微型缩略图时将这些微型缩略图转换成缩略图字节流,保存到DCIM/Camera/.thumnail/thumbdata路径下的缩略图字节流存储文件(即thumbdata文件)中,并按照缩略图对应的数据库ID排序。图2是通过SQLite可视化工具打开的Android本地数据库中ID从18到28的数据库片段示意图,图3是thumbdata文件的数据存储结构示意图,如图2所示,现有Android系统中数据文件在本地数据库存储时分配到的唯一标识ID是连续且递增的,ID为27和28的位置记录的是图片信息。参见图3,为了保证可以根据缩略图对应的图片在数据库中的ID直接查找到对应的缩略图字节流在thumbdata文件中的位置。Android系统在thumbdata文件中存储时只在ID为27和28对应的位置中保存有效数据,而thumbdata文件对应ID为I至26的位置保存的均为无效数据(即补位数据)。每个缩略图字节流在thumbdata文件中都占用1kb的存储空间,这样thumbdata文件中不存储缩略图字节流的位置需要用1kb的0x00补齐。由此可知,这种存储方式导致了 thumbdata文件中很多位置需要无效数据0x00补位,造成了存储空间的极大浪费。
[0005]例如,当一个Android手机中只有一张图片A,而图片A在本地数据库中分配的ID为100000时,thumbdata文件的大小则为100000*10kb = lGB。如果用超级编辑器打开这个IGB的缩略图字节流存储文件,将会看到大量“00 00 00 00 00...”这样的无效数据,而有效数据只占了极少的一部分。实际上,这种存储模式下thumbdata文件大小取决于最新一张图片对应的数据库ID,即使本地数据库中只存储了一张图片,而该图片对应的数据库ID为10000,那么在thumbdata文件中前99999*10kb的位置都是无效数据,只有最后一个位置存储了缩略图字节流(即存储的是有效数据)。
[0006]尤其在Android为了保证每个数据库ID对应数据的唯一性和数据库安全性,数据库中的ID是持续递增且不可复用的前提下。ID—旦被使用过,即使数据被删除了,ID也不会再使用。这样,当一个Android手机使用数月,数据库中的ID平均都会达到100000以上。很明显,现有的Android系统中缩略图存储方案造成了存储空间的严重浪费,亟待解决。

【发明内容】

[0007]本发明提供了一种基于Android系统的缩略图存储方法和装置,以解决现有的Andro id系统中缩略图存储方案造成的存储空间严重浪费的问题。
[0008]根据本发明的一个方面,提供了一种基于Android系统的缩略图存储方法,该方法包括:
[0009]在缩略图字节流存储文件所属的文件夹中新建索引文件;
[0010]当Android系统的数据库中新增图片时,生成新增图片对应的缩略图,将缩略图转换为缩略图字节流;
[0011]查找缩略图字节流存储文件的尾部位置,将转换后的缩略图字节流存储到缩略图字节流存储文件的尾部位置,使得缩略图字节流存储文件中每个位置存储的都是有效数据;
[0012]将缩略图字节流的存储位置信息记录到索引文件中。
[0013]可选地,将缩略图字节流的存储位置信息记录到索引文件中包括:
[0014]利用新增图片在Android系统的数据库中的唯一标识ID,将缩略图字节流的存储位置信息记录到索引文件中的第N个位置,其中N等于唯一标识ID;以及,将索引文件中第N个位置之前且没有记录缩略图字节流的存储位置信息的位置用无效数据填充。
[0015]可选地,该方法进一步包括:
[0016]当接收到包含唯一标识ID的缩略图字节流查找请求时,根据唯一标识ID查找索引文件,找到唯一标识ID对应的第N个位置;
[0017]利用查找到的第N个位置记录的缩略图字节流的存储位置信息,在所述缩略图字节流存储文件中获取缩略图字节流并返回。
[0018]可选地,索引文件中每条记录占用九个字节的存储空间,其中第一个字节的存储空间中存储Byte字节型数据,第二至第九个字节的存储空间中存储Long长整型数据;
[0019]或者,索引文件中每条记录占用八个字节的存储空间,该八个字节的存储空间中存储Long长整型数据。
[0020]可选地,当索引文件中每条记录占用九个字节的存储空间时,将九个字节的存储空间中的第一个字节的存储空间的数据作为标志位,用于标记该条记录是否存储了缩略图字节流的存储位置信息;是则,表明九个字节的存储空间中的第二至第九个字节的存储空间存放的是缩略图字节流的存储位置信息,否则,表明九个字节的存储空间中的第二至第九个字节的存储空间存放的是无效数据。
[0021]根据本发明的另一个方面,提供了一种基于Android系统的缩略图存储装置,该装置包括:
[0022]索引文件创建单元,用于在缩略图字节流存储文件所属的文件夹中新建索引文件;
[0023]缩略图转换单元,用于当Android系统的数据库中新增图片时,生成新增图片对应的缩略图,将缩略图转换为缩略图字节流;
[0024]存储单元,用于查找缩略图字节流存储文件的尾部位置,将转换后的缩略图字节流存储到缩略图字节流存储文件的尾部位置,使得缩略图字节流存储文件中每个位置存储的都是有效数据;
[0025]索引位置记录单元,用于将缩略图字节流的存储位置信息记录到索引文件中。
[0026]可选地,索引位置记录单元,具体用于利用新增图片在Android系统的数据库中的唯一标识ID,将缩略图字节流的存储位置信息记录到索引文件中的第N个位置,其中N等于唯一标识ID;以及,将索引文件中第N个位置之前且没有记录缩略图字节流的存储位置信息的位置用无效数据填充。
[0027]可选地,装置还包括:
[0028]索引查找单元,用于当接收到包含唯一标识ID的缩略图字节流查找请求时,根据唯一标识ID查找索引文件,找到唯一标识ID对应的第N个位置;
[0029]利用查
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1