我现在在做的事情是将一个项目从iOS移植到android,遇到的问题是资源太大,包括文件本身和占用内存。
在查找一些资料和询问一些朋友之后,把解决问题的方向方在ect1这种纹理压缩格式上。
原因是这种格式是OpenGL ES 2.0支持的,几乎所有的Android机器都支持。
我用的工具是Mali Texture Compression Tool v4.0.1,刚开始就遇到一个问题,就是生成的ktx文件大小跟预想的有差距。
原始的资源文件是png-24。
我观察过几个文件。最好的生成的文件大小是原始png文件大小的一半;但是有些竟然变大了。而且我对整个资源进行压缩后总的结果竟然也是变大...
按照我现在了解的情况,ktx一个像素只用0.5个byte表示的话,压缩后的文件大小应该跟png-8的文件大小差不多吧。
我使用的是命令行的压缩方式,命令是:
etcpack.exe input_filename out_directory -s fast -e perceptual -c etc1 -ktx
不知道是不是参数有什么问题?
还是这个工具本身就不能达到一定的压缩比?
这个要麻烦vincentzhai 帮忙看看如何回答
Wallace,你好。我刚才用 Mali Texture Compression Tool 4.1.0 实验了一下。实验的图片是 Assignment 3 - Png Format
在图形界面和命令行下都实验了,结果是从304.8kb缩小到79kb。从我的实验来看,压缩似乎没什么问题。要不你用 4.1.0试一试?下载地址在 Mali GPU Texture Compression Tool « Mali Developer Center
Hi George, 多谢你的回答。
Wallace你好,请问你的疑问解决了吗?
请在George回复的帖子中选择相应的“正确答案”或者“有用答案”的选项。
谢谢
问题的原因我大概已经清楚了。
png是一种经过文件压缩的图片格式,而ktx只是进行了纹理压缩,而没有进行文件压缩,所以在某些情况下ktx文件是会比原png(压缩比很高)要大。
如果我们分别用压缩工具再对png和ktx文件分别压缩,可以发现png文件不会变小多少,而ktx文件则会有一个明显的减小。
再次谢谢各位的关注!
有什么工具,可以对ktx图片格式进行压缩,减少硬盘的的占用吗