png图片格式定义是20世纪90年代中期的事了。它的IDAT块使用的LZ77算法(java自带的java.util.zip.DeflaterIn(Out)putStream有实现之)也派生出很多算法,很多压缩率都更高,如7z用的LZMA算法,号称最大压缩率算法。在手机资源如此稀缺的情况下,是可以考虑做一些改变。
png格式,手机游戏,一般png8就足够了,8为2的8次方256,实际上已经浪费了一半,因为它实际只容纳128个颜色,一个byte嘛,128就成-128了。把IHDR里的长度宽度,色深等几个提取出来,把色盘(记为a)提取出来;利用他们用L7zz算法解压出IDAT块(注意可能有几块哦),再还原出原来数据;这些数据是什么?这些数据是一维byte数组(针对png8哈),长度为总像素数(即是图宽乘长)(记之为b),下标index,index % width,index/width就是图中的(x,y),那么a[b[index]*3]就是(x,y)的RGB中的R值,a[b[index]*3+1],a[b[index]*3+2]为G,B值。再根据tRNS确定哪个色是透明的,一般是最后一个色值。
a这块数据,可以把透明的标记成-1或者其他非索引b的就可以了,发现是-1值,就是透明的。把长宽色盘a和b一起用LZMA压缩,省多少空间,很可观吧?
7z官网上有LZMA压缩和解压缩算法,解压缩算法5个类(当然内部类也有几个,鸟哥观察,人家肯定不是java人员写的)左右,完全可以移植到j2me上。
这样图片,完全脱离了png格式,可以保护图片,可以省去png标记块名等一些格式上的字节。
最后使用这些数据时,用Image.createARGB搞定。
分享到:
相关推荐
png 库应用png 库 png库 png库 png库 png 库png库 png 库png 库png 库应用png 库 png库 png库 png库 png 库png库 png 库png 库png 库应用png 库 png库 png库 png库 png 库png库 png 库png 库png 库应用png 库 png库 ...
Delphi7可用的PngImage控件 PNG Delphi v.1.564,可用于D7显示Png图片。 使用方法:(Delphi 7 使用成功案例) 1、将本包中所有文件复制到开发文件保存的目录中 2、在USES单元中加入pngimage 3、窗体中插入image1...
《BCB组件PNGImage:为BCB添加PNG图像支持》 在软件开发中,尤其是在Windows平台上,使用Visual Component Library (VCL) 的Borland C++ Builder(简称BCB)进行编程时,开发者经常会遇到对不同图像格式的支持需求...
在本文中,我们将深入探讨如何在Visual C++ 6.0(简称VC6.0)环境中使用PNG库来读取PNG图像数据。PNG(Portable Network Graphics)是一种无损压缩的位图格式,广泛用于网络和应用程序中。由于VC6.0的年代较早,它并...
2、在USES单元中加入pngimage 3、窗体中插入image1控件 4、在调用位置,加入如下代码就OK啦! var png: tpngimage; begin png := tpngimage.Create; png.LoadFromFile(getcurrentdir() + '\pic.png'); ...
在MFC(Microsoft Foundation Classes)框架中加载PNG图片文件,通常需要借助第三方库或Windows API扩展来实现,因为MFC本身并不直接支持PNG格式。PNG(Portable Network Graphics)是一种无损压缩的图像文件格式,...
apng序列帧png制作工具 APNG apngasm_gui.exe 直接把多个png序列拖到面板中,自动生成APNG动态图片。
PNG(Portable Network Graphics)是一种无损压缩的位图格式,广泛应用在网页设计、软件界面以及图形用户界面中。PNG图片的宽高信息是其元数据的一部分,这些信息存储在PNG图像文件的头部,称为PNG头部标识符(IHDR...
本话题主要关注的是将`.gnt`文件转换成`.png`文件的过程,这通常是因为不同的应用场景或软件对图像格式有不同的支持需求。`.gnt`文件是某些特定软件或系统使用的图形格式,而`.png`是一种广泛接受的、无损的图像文件...
本篇文章将深入探讨如何使用pnglib库和zlib库将PNG图像转换为BMP格式,这是一项常见的任务,尤其是在跨平台或低级系统编程中。我们将讨论pnglib库的功能、zlib库的作用,以及如何通过C语言实现这个转换过程。 首先...
PNG(Portable Network Graphics)是一种无损压缩的位图格式,广泛应用在网页设计、软件图标、图形用户界面等场景。它支持透明度,可以创建具有Alpha通道的图像,使得背景可以呈现出不同程度的透明。而ICO(Icon)是...
"多张PNG小图合并PNG大图小工具"是一个实用程序,它允许用户将多个PNG格式的小图像整合成一个单一的PNG大图像。这个工具的目的是简化工作流程,减少手动操作,并可能提高效率。 PNG(Portable Network Graphics)是...
PNGView软件是一款专为查看带有透明度的PNG图片设计的小型工具,尤其适合那些需要处理或欣赏PNG格式图像的用户。PNG(Portable Network Graphics)是一种常见的位图图像格式,其特点是支持透明度和无损压缩,常用于...
TinyPNG是一款广受欢迎的图像压缩工具,特别针对PNG格式的图片设计,能够在保持高质量的同时显著降低文件大小。这款工具在PC版Photoshop中以插件形式存在,为设计师和开发者提供了一个高效、便捷的解决方案,以优化...
在Delphi编程环境中,PNG(Portable Network Graphics)是一种常见的位图格式,因其支持透明度和高压缩率而被广泛使用。然而,Delphi的标准`TImage`控件默认并不直接支持加载和显示PNG图像。因此,为了在Delphi窗体...
在Delphi编程中,UI界面的设计是至关重要的,而PNG图片因其高质量和透明度特性,常被用于创建精美且具有专业感的用户界面。然而,原生的Delphi Image组件并不直接支持PNG图像格式,这使得开发者需要寻找额外的方法来...
PNG(Portable Network Graphics)是一种无损压缩的位图格式,广泛用于网页和其他数字媒体中,因为它支持透明度和高色彩深度。在.NET框架下,处理PNG图片时,开发者可能会遇到一些困难,因为标准的.NET库可能无法...
PNG(Portable Network Graphics)是一种广泛使用的无损压缩图像文件格式,以其高质量、透明度支持以及跨平台兼容性而受到青睐。在游戏开发和数字媒体领域,PNG图片可能会因为版权保护或者安全需求而进行加密处理,...
# PNG加密解密工具 此工具可以加密和解密PNG图片,保护您的隐私。 ## 加密 1. 选择要加密的PNG图片。 2. 输入密码并确认。 3. 点击“加密”按钮。 4. 保存加密后的PNG图片。 ## 解密 1. 选择要解密的PNG图片。 ...
标题 "PB显示PNG图片.zip" 涉及到的技术核心是使用PowerBuilder...总的来说,"PB显示PNG图片.zip"这个压缩包文件提供了一个在PowerBuilder环境中处理和显示PNG图像的解决方案,涵盖了从加载到显示再到打印的全过程。