APP下载

一种Android开发中的图像数据流量控制与缓存技术研究

2016-10-22梁丽

电子设计工程 2016年17期
关键词:压缩算法编码流量

梁丽

(陕西财经职业技术学院陕西咸阳712000)

一种Android开发中的图像数据流量控制与缓存技术研究

梁丽

(陕西财经职业技术学院陕西咸阳712000)

针对当前Android应用程序开发中对手机用户流量的消耗问题,从图像数据处理的角度,提出一种基于JEPG压缩算法和本地缓存的流量控制技术。通过将JEPG算法移植到Android中,从而在Android上对网络图片进行压缩,实现对用户手机流量的控制。同时提出一种本地缓存技术,减少用户对图片的反复请求造成的流量消耗,增强用户体验。最后通过试验平台对方案进行验证,得到良好效果。

Android;JEPG压缩算法;流量控制;本地缓存;图像数据

自2007年手机Android系统的发布,针对Android的移动应用开发正在成为当前的热点。根据相关数据统计,Android应用在2014年达到50万个,下载次数从200亿次增加到500亿次,成为当前移动应用开发的热门。在巨大市场前景的情况下,减少大量访问带来的流量增加,从而提高用户的体验感成为当前思考的重点问题。对此,本文针对移动应用开发,提出将JEPG算法移植到Android手机中,由此通过压缩实现对图片大小的控制。另外针对系统的反复请求导致的流量浪费,提出一种本地缓存方案,并对上述的技术进行了详细的实现。().toString();

String filePath=SDCarePath+"/"+"meitu.jpg";

Bitmap rawBitmap1=BitmapFactory.decodeFile(filePath,null);

1.2JEPG图像压缩算法

JEPG作为当前通用的一种静止图像压缩标准,不仅可被应用在彩色图像,还可应用在灰度图像。其具体的原理则是通过调节图像的压缩比,从而实现对图像大小的压缩。其具体的压缩流程则如图1所示。

1 图片数据流量控制处理技术

1.1图像读取准备

对Android手机中的图片进行压缩,首先需要将SDcard中的图片进行读取,对此在Android中专门开发了API接口,提供了基于图片操作的Bitmap类。Bitmap类中的构造函数通常被私有化,导致不能结合函数直接创建该类的对象。因此,必须通过辅助的BitmapFactory类对Bitmap实例化,从而制定位置图片的压缩。如从Android手机中的SD卡中调用,并对图片进行压缩,具体实现的代码为:

String SDCarePath=Environment.getExternalStorageDirectory

图1JEPG图像压缩处理流程

在JEPG压缩算法中,包含多种不同的工作模式,而最为常用的为基于8*8的数据块。而通过图1可以看出,JEPG图像流程重要包括以下几个步骤:

1)颜色模式转换

在JEPG算法中,需要将图像中的颜色数据进行转换。其具体的思路是将传统的图像数据RGB转换为Y″CBCR,其中Y″表示亮度,CB,CR分别为蓝色度和红色度。其具体的转换为:

通过公式(1)可得到初步压缩后的图像蓝色度和红色度。

2)DCT变换

DCT(Discrete Cosine Transform,离散余弦变换),是当前码率压缩当中常用的编码方法。通过DCT变换,将空间域矩阵P转换为频率域矩阵T,而该过程是可逆向的。因此,DCT变换包括正向离散余弦变换和反向离散余弦变换两种。以8*8像素转换为例,其具体的DCT变换公式为:

通过DCT变换,将压缩图片分成为N*N的一个像素块,然后通过DCT进行逐一编码操作。

3)量化

通过DCT数据转换,还必须对图像进行量化处理,由此才能进行编码。在量化阶段中必须构建两个8*8量化矩阵,一个处理亮度频率系数,一个为色度频率系数,将频率系数除以量化矩阵,得到计算结果并取整,从而完成整个量化过程。其具体的计算公式为:

量化值(i,j)=[T(i,j)/量化矩阵(i,j)](3)

而在JEPG算法中,对图像的亮度和色度不同,可得到不同的量化表。本文则对64个DCT系数进行量化,可得到如图2所示的结果。

图2 亮度和色度量化表

4)编码

在进行量化后,需要对AC和DC不同系数采用不同的编码方式。通常对系数的处理分别运用游程统计编码、差分计算编码。DC编码则是将其系数减去前后系数,从而得到一个系数差值,最后根据该差值,在编码表当中找到相应的编码值,将该差值和编码值连接起来传入到文件当中。而AC编码相对比较复杂,需要连续统计并查找其对应的编码值。如通过采用RLC行程编码,降低数据本身的传输量,将重复出现的连续字符用两个字节表示,其中第一个为重复的次数,而第二个则为其字符串。如(3,6)就代表字符串为“666”。

2 基于JEPG压缩的算法的整体流程设计

对JEPG整体算法流程的设计则如以下步骤:

1)通过BitmapFactory类创建连接,将图片保存到流对象中;

2)通过Bitmap类对图像进行初步的压缩;

3)将图片数据进行转换,由原来的RGB格式转换为;

4)运用JEPG算法对图像数据进行DCT变换、量化、编码处理;

5)保存到SD卡中。

3 本地缓存技术

除通过上述对图片的压缩方式减少Android手机流量之外,还需要将访问的图片保存到本地缓存当中。对Android手机用户来讲,如果反复的对某个图片进行访问、加载,势必增加用户的流量,并减少用户体验。因此,需要设计一种缓存策略对手机用户访问的图片进行保存。但是如果将图片持久化保存势必增加手机的I/O开销,会占用系统过多的资源。

而通过分析可以认为,每个图片都有一个唯一的URL标识,如果网络图片出现变化,URL地址也会出现变化。因此针对该思路,提出以下两种策略:

第一,设定访问优先级:访问优先级:内存缓存>磁盘缓存>网络资源

第二,缓存判定。本文认为将压缩之后的图片通过Bitmap类保存到磁盘的缓存文件夹中的时候,其首要是要判定该文件夹的大小是否超出了缓存的最大值。假设存入的文件大小为A,磁盘整体大小为B,当前缓存在该目录下的文件大小为C,设定的缓存最大值为D,可缓存的文件大小为E。由此有判定公式:

其具体的算法设计则如图3所示。

图3 本地缓存实现算法

4 试验平台搭建与测试

利用Android中ADT自带的AVD模拟设备,对上述的算法进行测试。其具体的思路是通过发布测试应用端的Eclispe后台,对通过上述算法的图片进行查看,从而观察不同JEPG压缩等级下的图片大小。同时以某餐饮快餐网站为例,该网站其具体的功能界面如图4所示。

图4 餐饮软件界面

该主界面采用TableLayout作为表格布局,对显示的文本框则采用View类中的Text、Edit等进行编辑。在对图中的图片进行上传的过程中,需要对图片进行压缩。同时借助Tomact6.0服务器开启后台服务,将图片进行上传,最后通过ADT得到压缩后的相关结果。其具体的压缩结果则如图5所示。

图5JEPG压缩比较

通过图5看出,原始图片与JEPG算法在质量等级下的图片效果相当,说明随着压缩等级质量的增加,压缩的效果越好,并进一步证明该算法的有效性,即节约了流量,同时提高了图片上传的速率。

5 结束语

针对当前Android中经常访问的图片资源问题,特别是在休闲生活类等大量下载或上传的图片,采用Android中植入JEPG算法和本地缓存方式,大大节约了流量,提高访问速率,取得良好的效果,对促进移动应用具有重要的作用。

[1]曾健平,邵艳洁.Android系统架构及应用程序开发研究[J].微计算机信息,2011(9):1-3.

[2]差沙,地狱男爵.用Android开发手机应用[J].程序员,2008(1):56-61.

[3]程格平,王毅.一种基于压缩图像的反取证方法[J].计算机时代,2015(9):12-13,16.

[4]叶炳发,孟小华.Android图形系统的分析与移植[J].电信科学,2010(2):65-68.

[5]李琼,石俊生,毛小群.主观评价JPEG与JPEG2000标准的彩色图像最佳压缩比的实验研究[J].中国图象图形学报,2010(7):1042-1046.

[6]郭利全,谢维波.基于Android平台的可视对讲系统的设计与实现[J].微型机与应用,2012(5):4-7.

[7]武瑛.DCT变换在图像压缩中的应用[J].计算机与现代化,2013(4):103-106.

[8]黄西娟,王冰.一种DCT变换域的鲁棒数字水印[J].计算机工程,2011(20):145-148.

[9]宁国强,刘媛媛,李凤堂,张建理.一种基于DWT-DCT变换强鲁棒性的数字水印算法[J].电子设计工程,2009(11):67-69.

[10]王永皎,郭力争.基于DCT变换的图像压缩技术研究[J].河南城建学院学报,2013(1):42-46.

[11]胡维青,张艳花.基于JPEG系数的服装艺术特色图像库检索[J].青岛大学学报:自然科学版,2012(4):39-43.

[12]周波,张源,杨珉,等.用代码缓存复用技术提升Android即时编译器效率[J].小型微型计算机系统,2013(6):1307-1312.

[13]纪晓阳.线程在Android开发中的应用[J].软件,2013(8): 24-26,41.

[14]闫伟,叶建栲.多线程技术在android手机开发中的应用[J].信息通信,2012(1):46-47.

[15]焦健.Eclipse下Android环境的搭建[J].信息与电脑(理论版),2012(6):33-34.

Research on image data flow control and buffer technology in Android development

LIANG Li
(Shaanxi Vocational and Technical College of Finance and Economics,Xianyang 712000,China)

Aiming at the problem of the consumption of mobile phone users in the development of Android application program,a new method based on JEPG compression algorithm and local buffer is proposed.JEPG algorithm is transplanted to the Android,so that the network image compression on the Android to achieve the user's mobile traffic control.At the same time,a local cache technology is proposed,which reduces the traffic consumption caused by the repeated requests of users,and enhances the user experience.Finally,the scheme is verified by the experimental platform,and good results are obtained.

Android;JEPG compression algorithm;flow control;local cache;image data

TN0

A

1674-6236(2016)17-0164-03

2015-12-02稿件编号:201512018

梁丽(1979—),女,陕西咸阳人,讲师。研究方向:计算机应用教学。

猜你喜欢

压缩算法编码流量
冰墩墩背后的流量密码
张晓明:流量决定胜负!三大流量高地裂变无限可能!
基于SAR-SIFT和快速稀疏编码的合成孔径雷达图像配准
寻找书业新流量
《全元诗》未编码疑难字考辨十五则
子带编码在图像压缩编码中的应用
基于参数识别的轨道电路监测数据压缩算法研究
Genome and healthcare
一种基于嵌入式实时操作系统Vxworks下的数据压缩技术
基于HBASE的大数据压缩算法的研究