ASTC中ARM研發的一種較新的貼圖壓縮格式,從IOS9(A8架構,現在都iOS12了)開始支持ASTC壓縮格式 ,相對於PVRTC2/4而言,ASTC(4X4)的壓縮比會增加到0.25,不過顯示效果也會好很多,而且不要求圖片長寬相等且為2的冪次方。而且Android設備也支持。
圖片壓縮核心思想是將大圖分為多個顏色塊,每個顏色塊固定大小為16-bytes,單個顏色塊里的顏色像素怎么划分不關心,這里只記錄下ASTC格式圖片壓縮后的像素大小、圖片壓縮率、圖片總體大小。
對此格式圖片的壓縮率可能是一些公司面試的考點。
公式
像素大小 = 16-bytes / 分塊寬高 * 8-bit;
壓縮率 = 原始像素大小(32-bit) / 像素塊大小;
圖像大小 = 原始圖片大小 / 壓縮率;
假設一張4MB的1024*1024原始圖片:
塊寬高 | 像素大小(bits) | 壓縮率 | 壓縮后圖片大小 |
4*4 | 8 | 4 | 1MB |
5*5 | 5.12 | 6.25 | 655KB |
8*8 | 2 | 16 | 256KB |
10*10 | 1.28 | 25 | 163KB |
12*12 | 0.89 | 35.95 | 113.93KB |
參考:
https://www.khronos.org/opengl/wiki/ASTC_Texture_Compression
https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_texture_compression_astc_hdr.txt
https://blog.csdn.net/ltycloud/article/details/81630515
在官方文檔上也有ASTC的壓縮率:
https://docs.unity3d.com/Manual/class-TextureImporterOverride.html
https://developer.nvidia.com/astc-texture-compression-for-game-assets