基于移动设备的PNG图片优化实现

来源 :电脑知识与技术·学术交流 | 被引量 : 0次 | 上传用户:iyt1713
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:随着硬件技术的发展,移动设备的性能获得很大的提高。在移动设备上我们已经可以使用各种图像、音乐资源。目前在图片的使用上局限在几种格式,PNG自身的一些优点使其在移动设备上获得广泛的应用。移动设备应用程序的开发需要用到大量的图片资源,而这些对于程序员来讲是比较难于管理的。为图片资源开发一个可以方便读取的包文件结构,对图片进行打包,并提供相关方法接口,可以节约程序员的编码时间,同时可以方便对图片的读取管理。由于PNG图片的数据结构中部分数据块是可选的,这些数据块并不影响图片在移动设备上的表现效果,对PNG进行适当的处理可以有效的减少占用空间,优化移动设备上的图片应用。
  关键词:移动设备;PNG图片;图像打包管理
  中图分类号:TP319文献标识码:A文章编号:1009-3044(2008)27-2070-03
  Based on Mobile Devices Optimized to Achieve the PNG Image
  XU Yi-qing, LIU Lin
  (Nanjing Forestry University,Nanjing 210037,China)
  Abstract:With the development of hardware technology, the performance of mobile devices have greatly improved, on mobile devices we can use some kinds of images and music resources. At present, we can only use several formats. PNG is used widely by its benefits. Mobile device application development requires a great deal of resources picture, which is more difficult to manage in terms of for the programmer.
  Developing a package structure for the image resources which can be read easily, packaging the images, and provide interfaces, it will help the programmers to save their time , and they can manage the read of images easily . For more, some data chunks of PNG is unnecessary, so we can delete them to save storage space, it is helpful for the use of images on mobile devices.
  Key words: mobile devices;PNG;image package management
  1 PNG文件处理算法程序
  经过分析,我们知道PNG图片中存在较多的可选数据段,而这些数据段对于手机上的应用不是必须的。经过测试,剔除这些可选数据段不会影响图片在移动设备上的显示。所以可以寻找一种方法将PNG图片进行处理,只保留其中必须的数据段,PNG图片中可选数据段大小在30—100K左右,所以这样的处理相对手机比较有限的存储空间来说将节约比较客观的存储空间。
  经过分析,我们知道以下数据段是非必须的:
  cHRM gAMA sBIT bKGD hIST tRNS oFFs pHYs
  sCAL tIME tEXt zTXt fRAc GIFg GIFt GIFx
  所以在PNG应用于手机程序之前可以先剔除这些数据。
  需要注意的一点是,因为这些数据段不是必须的,所以并不是所有PNG图片中都包含这些数据段。这样如果考虑剔除的话,对于数据段的遍历将浪费时间,影响效率,而必选数据段只有四个,这样选择对必选数据段进行遍历并提取数据写成新的PNG文件在效率上会有很大改进。
  可以将PNG文件结构简化描述为表1所示。
  
  处理算法代码为:
  读取头部信息,写入新文件:
  buff=newbyte[8];
  fis.read(buff,0,8);
  fos.write(buff);
  booleanbool1=true;
  while(bool1){
   bytebuf[]=newbyte[4];
   booleanbool=true;
   while(bool){
   intn=dis.readInt();//长度
   System.out.println(n);
   dis.read(buf,0,4);//数据段名称
   System.out.println(newString(buf));
   if(b[0].equals(newString(buf))||b[1].equals(newString(buf))||b[2].equals(newString(buf))){
   System.out.println("2"+newString(buf));
   dos.writeInt(n);
   dos.write(buf);
   bytefbuff[]=newbyte[n+4];
   fis.read(fbuff,0,n+4);//读取IHDR块数据及CRC数据
   dos.write(fbuff);
   bool=false;
   }
   elseif(b[3].equals(newString(buf))){
   System.out.println("2"+newString(buf));
   System.out.println(n);
   dos.writeInt(n);
   dos.write(buf);
   bytefbuff[]=newbyte[4];
   fis.read(fbuff,0,4);//读取IHDR块数据及CRC数据
   dos.write(fbuff);
   bool=false;
   bool1=false;
   }
   else{
   dis.skip(n+4);//同时跳过字节CRC验证码
   }} }
  图片经过处理后占用空间明显缩小,但是只是处理图片并不能实现对图片的管理和封装,使用包文件结构将能对文件进行有效的封装管理。
  
  2 使用包文件的优点
  
  2.1 节约存储空间
  当用户创建一个文件时,Windows操作系统会请求相应的文件系统(FAT/FAT32/NTFS)创建文件,虽然扇区是磁盘最小的物理存储单元,但由于操作系统无法对数目众多的扇区进行寻址,所以操作系统就将相邻的扇区组合在一起,形成一个簇,然后再对簇进行管理(每个簇可以包括2、4、8、16、32或64个扇区)。显然,簇是操作系统所使用的逻辑概念,而非磁盘的物理特性。为了更好地管理磁盘空间和更高效地从硬盘读取数据,操作系统规定一个簇中只能放置一个文件的内容,可以说文件的存储是以簇为单位的,也就是说一个文件要占用一个或多个簇,而簇是多个扇区构成。如果一个簇只有一个字节被一个文件占用,那么该簇的其他部分即使是空闲的,也不能被别的文件所利用,这样空间就被浪费了。
  而在移动设备中,同样存在类似问题。而我们在移动设备中使用图片资源时,图片数量是大量的,而且由于移动设备的存储限制和性能限制,这些图片本身通常是比较小的,在手机上应用的图片通常在1K左右,有些甚至小于1K,所以在磁盘占用方面1K的文件将浪费掉一定的簇空间,所以大量小图片单个存储的话会浪费相对手机有限存储资源来讲较多的存储空间,如果将如此多的小文件合并成一个文件,这样就能有效的节约空间。使用一定的包文件结构可以有效的实现。
  2.2 方便管理
  由于文件数量庞大,所以当程序员需要使用图片时,需要不停的使用createImage()方法进行画图操作,这样是极其浪费时间的,而且重复的劳动在这里变得没有意义,将文件打包后,为程序员提供一个有别于J2ME的createImage()方法的createImage()方法,使程序员可以单独使用其中某一张图片,或者使用其中的几张图片,这样将节约大量的编码时间。
  2.3 加密数据,防止用户恶意篡改
  在以往的图片使用中,图片被放在一个文件夹中,这样其他人很容易就能看到图片的具体内容并进行修改。使用包文件结构后,可以有效对文件进行加密,防止用户对文件内容的恶意篡改。
  2.4 包文件结构设计
  使用UltraEdit来打开一些包文件和其他如图片文件来分析文件打包格式。为了得到更好的分析结果,我使用比较简单的TXT文件进行打包,而且文件数据为“123”。打包为RAR文件。
  
  如图2,经过测试对比,图片处理前后的大小相差很多,但是结果是不稳定的,这主要因为图片处理算法是提取必选数据段,体积减小多少取决于图片中可选数据的多少,在美工制作图片的过程中,由于图片的修改过程并非全部一致,所以可选数据段的多少是不确定的。但是无论图片可选数据存在多少,可选数据总是存在,通常在20%--50%左右,所以尽管处理结果不稳定,要对体积减少的目的已经达到。
  3.2 LX与主流打包压缩格式对比
  目前最流行的压缩文件格式有zip和rar,因为首选和这两款主流产品进行对比。
  LX文件是不经过压缩的,因为移动设备图片本身比较小,而且经过本文算法处理后变的更小,下面来对比一下三类格式的大小。
  经过比较发现在少量文件情况下,LX与WINRAR和ZIP文件大小相差不多,随着文件数量的增加,LX文件渐渐的比WINRAR和ZIP文件大了许多,原因可以理解,因为无论RAR和ZIP都是经过压缩的,而LX是不经压缩的,当文件数量少时,数据重复量较少,WINRAR和ZIP压缩算法的作用不能得到很好的体现,所以文件大小相差不多,当数据量较多时,必然存在较多的重复数据,特别是对于图片,大量色彩数据的重复使RAR和ZIP的压缩算法得到良好运用。
  3.3 使用LX的意义与价值
  经过对比我们发现LX和RAR和ZIP的对比是没有任何优势可言的,但是在移动设备应用上还是选择使用LX,这是因为,相对存储能力,移动设备的运算能力也受限制,当包文件使用了压缩算法后,必须要进行解压缩的运算才能读取数据,这样要提取包中任何一个文件时都要进行整个包的解压缩运算,这样将耗费CPU的大量运算时间,严重影响设备性能,而就存储方面而言,一个应用程序的图片大概在500-1000张左右,这样经过处理后,和压缩的包文件相比相差在0—500K之间,也就是舍弃500K的存储空间去换取更高的运算效率,当然这仅仅是针对与RAR和ZIP的对比来讲。针对移动设备目前的应用来讲,非但没有占用更多的空间,又节省了大约50%左右的存储空间。
  
  4 结束语
  
  本文主要致力于手机应用PNG图片的优化处理,对于PNG图片进行了比较详细的分析,并提出了一种可以有效减少针对手机应用的PNG图片大小的算法。提供对图片进行打包的算法以及包文件结构。在包内具体图像文件的读取方面提供了相应的接口方法,可以使程序员更方便的读取图像。目前移动设备图片应用的主流格式PNG,在移动设备应用中,大量的小图片难于管理,并造成存储空间的浪费,而且在程序员编程过程中,因为对每一张图片进行读取生成,造成大量代码冗余,影响工作效率。
  而根据PNG文件的具体数据结构的分析,实际中可以剔除PNG文件中的无用数据段,以减少文件体积的方法,提取其中必选数据段写成新的PNG文件。而图片处理后并不影响在移动设备上的显示效果。因此需要设计一种简单的打包算法,对大量PNG文件进行打包,有效减少小文件对存储空间的浪费,并提供按文件名读取和按包内文件序号读取两种方法,方便对图片的读取。在对图片的保护方面也起到一定作用,防止用户可以轻易更改图片。
  由于时间有限,仅仅做了针对PNG图片的处理,随着硬件技术的提升,未来移动设备将会有更大的发展,意味着在未来移动设备的硬件平台上将可以使用更为丰富的资源。也可以尝试对各种图片资源进行处理,要熟悉各种图片数据结构,针对应用编写处理算法,并对算法进行封装。使该处理可以应用于多种图片类型。也可以考虑提供图片格式转换,转换为PNG图片后进行处理,相对来说前者效率更高。在文件名存储方面,未考虑中文文件名编码问题,在实际操作中中文图片名称不能正确读取。数据块取舍方面tRNS 可以选择,这个数据块会影响到图片透明的处理。文件头部和尾部可以剔除,在实际使用时进行添加,可以有效的节约一定存储空间。但同时也耗费CPU运算时间,存储和运算可选其一。
  
  参考文献:
  [1] (美)Bruce Eckel.JAVA编程思想[M].陈昊鹏,译.北京:机械工业出版社.
  [2] Herbert Schildt.JAVA2参考大全[M].张玉清,吴溥峰,等,译.北京:清华大学出版社.
  [3] PNG文件格式白皮书[EB/OL].http://www.w3.org/TR/REC-PNG.html.
  [4](美)Mark Allen Weiss. 数据结构与问题求解Java语言描述[M].翁惠玉,严骏,等,译.北京:人民邮电出版社.
  [5] (美)约翰逊. J2EE设计开发编程指南[M].魏海萍,等,译.北京:电子工业出版社.
  [6] (美)霍斯特曼, (美)科奈尔. JAVA2核心技术卷[M].北京:机械工业出版
  [7] 张云涛,龚玲.Eclipse精要与高级开发技术[M].北京:电子工业出版社.
  [8] (美)萨洛蒙,吴乐南,译.数据压缩原理与应用[M].2版.北京:电子工业出版社.
  [9] 马平.数字图像处理和压缩[M].北京:电子工业出版社,2007.
  [10] (日本)米川英树.J2ME MIDP手机游戏程序设计[M].博硕文化,译.北京:中国铁道出版社,2005.
其他文献
摘要:通过分析股市行情中排序问题的具体问题,满足目前软件快速开发的需求,结合STL技术给出解决问题的具体实现方法,并讨论STL技术在未来软件开发中的发展趋势。  关键词:STL容器;定时排序;即时排序;股市  中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)08-10ppp-0c    股民在使用股票分析软件的过程中需要及时获得到股票的各种指标排名,例如今日涨幅排名、今
2019年秋,统编本教材全面普及。为了做好苏教版教材与统编教材综合性学习板块的过渡衔接,本文将从析异同、理缺失、探教法三个角度,帮助老师们通晓两套教材这一板块的编排特点,明确在实施教学过程中需要注意的问题。  一、析异同:两套教材综合性学习板块比对  1.同:主题引领,相对独立  两套教材综合性学习板块都采用了“主题引领”的编排方式,都有相对独立的编排体例,具体如下。  第一,都把握了综合性学习的
简介  四川旭日装裱艺术画院,是一家集书画装裱艺术研究、艺术创作、交流、培训、展览、收藏等为一体的综合性艺术机构。以弘扬中国优秀传统文化,推进四川书画艺术的传承和发展为己任,长期致力于书画装裱的研究。不仅传承了传统书画装裱技艺,还在传统的基础上不断创新,注重传统与现代相结合的全新个性化设计。白成立以来,始终坚守“弘扬书面艺术”这一宗旨,组织艺术家进行书面创作,发现并培养具有潜力的年轻艺术家,并充分
摘要:主要从面向对象的基本概念出发,分析了C#中的Form类,重点介绍了在C#中如何实现窗体间的相互调用方法,以及窗体间数据传递方法与实现技术。  关键词:类;C#;窗体;数据传递  中图分类号:TP312文献标识码:A文章编号:1009-3044(2008)09-11645-05    The Methods of Calling form and Data Transmission with
在2018年小学语文群文阅读教学研讨活动中,蒋军晶老师执教了公开课——群诗阅读《半轮月》。他打破单篇教学的窠臼,利用群文阅读,另辟蹊径,走向互文整合阅读的宽广与开放。通过《南山大侠》《秋江的晚上》《海鸥》《秋》的结构化组合引发学生思考,并以“怎样写像诗”这一富有挑战性的问题为驱动,引导学生求同存异,分析归纳,思考探究,导出“写诗的规律”这一发现,最后在读写结合中锻炼学生的创新思维,在巩固反思中提升
在群星璀璨的唐代诗坛上,与李白、杜甫、白居易等大诗人相比,王绩也许算不上是一颗闪亮的明星。然而,若将其置于六朝末至初唐诗歌演变的关节点上,那么他的价值和魅力就非同一般了。王绩的诗歌一扫齐梁诗坛柔靡绮丽、重文轻质的宫廷诗风,而在山水景物描写中寄予个人独特的生命体验,开启了一代新诗风。《野望》即是此类诗歌中极具代表性的作品。  由隋入唐以后,王绩以秘书省正字待诏门下省,不久即辞官回乡。唐太宗贞观年问,
摘要:本文基于ASP技术,介绍了ASP技术的工作原理,ASP具有易开发、无需编译或连接即可执行、无需客户端浏览器支持等许多优点,迅速被广大网络设计和开发人员所接受,成为他们在Windows 环境下首选的网站开发和编程技术。ASP虽然具有许多优点,但是我们也应该看到ASP 从一开始就一直受到众多漏洞的困扰。因此我们有必要了解ASP所存在的安全问题,并且找到相应的对策,使我们开发的ASP网站更加安全可
摘要: 该文探讨了在Word中调用AutoCAD图形的几种方法以及具体的操作步骤,并对这些方法进行了分析比较,明确了各种方法的优缺点。利用这些方法,既可方便文字的录入,又可发挥AutoCAD的绘图优势,有效地实现图文混排的效果。  关键词: AutoCAD; 图形数据; 调用与处理  中图分类号:TP391文献标识码:B文章编号:1009-3044(2008)24-1291-02    The E
摘要:AVS标准是由2002年6月成立的“数字音视频编解码技术标准工作组”联合国内从事数字音视频编解码技术研发的科研机构和企业制定完成的,一套适应面十分广阔的技术标准。目前,视频解码器的实现的主要方法有:1)基于PC的软件实现;2)基于DSP的嵌入式系统实现;3)基于可编程逻辑器件的专用芯片实现。通用PC机非专用于视频处理,所以实现效率不高,而DSP虽然灵活性强,但是在性能以及性价比上不及FPGA