点九图文件(PNG)解析
前情提要
在很久之前点九图还有两条黑边,那时候写了一个解析的demo:
iOS_NinePatch
后来黑边没有了,问安卓的同事,说是“编译”过了。具体是怎么“编译”的,他们也不知道,于是事情就这样搁置了一年左右。
直到不久前,需要用到一些图片拉伸和内容区域限定,实在是羡慕安卓的点九图不需要单独写配置项,于是决定解决这个问题。
技术要点
通过阅读Android源码,发现下面几点:
- 信息保存在一个叫
npTc
的png chunk里 - 使用
Res_png_9patch
这个结构来读取和验证点九图的信息。
文件分析
通过iHex
读取素材:
结合PNG Metadata的文档,获取整个npTc
chunk的数据,对比Res_png_9patch
结构:
npTc chunk:
0000003C # length
6E705463 # npTc
00 # wasDeserialized
02 # numXDivs
02 # numYDivs
03 # numColors
20000000 # *xDivsz
28000000 # *yDivsz
0000013F # paddingLeft
00000044 # paddingRight
0000003D # paddingTop
00000039 # paddingBottom
30000000 # *colors
0000013F # stretch left
00000147 # stretch right
00000000 # stretch top
0000009C # stretch bottom
00000001 00000001 00000001 E4042807
00002000 # CRC
至此,文件结构分析完成,读取比较简单不做赘述了。
相关材料
相关文档:
The Metadata in PNG
NinePatch.cpp
工具:
iHex
素材:
“编译”后的点九图
转载于:https://my.oschina.net/lisongrui/blog/2961063
点九图文件(PNG)解析相关推荐
- Android点九图(.9.png)的特点和制
看了一下,觉得这个NinePng九图神器App还不错,帮忙推荐一下. 转自http://blog.csdn.net/sasoritattoo/article/details/42457619 本文主要 ...
- 点九图完全解析-附官方工具
搞懂点九图看这一篇就够了. 内容简介 你真的了解android的点九图吗?读完这一篇,再来回答这个问题,废话少说,先看看本文要讲的主要内容: 点九图简介 下图是一张android系统中的典型点九切图, ...
- Android 点九图机制讲解及在聊天气泡中的应用
点九图简介 Android为了使用同一张图作为不同数量文字的背景,设计了一种可以指定区域拉伸的图片格式".9.png",这种图片格式就是点九图. 注意:这种图片格式只能被使用于An ...
- python特性高移植性_Python特性图文盘点|微胜教育《九大编程语言全解析》系列...
原标题:Python特性图文盘点|微胜教育<九大编程语言全解析>系列 又到了每周<九大编程语言全解析>的时候了,小伙伴们五一马上到了,想好去哪浪了吗? 今天我们盘Pytho ...
- android .9图片在代码中的设置,Android点九图总结以及在聊天气泡中的使用
编辑推荐: 本文来自于腾讯云,介绍了点九图的本质,聊天气泡中使用点九图,其它问题等. 1. 点九图介绍 这一块是对点九图的简单介绍,如果对这块已经有了解的话,可以直接跳到2,看看聊天气泡中如何使用点九 ...
- 【玩转cocos2d-x之三十】点九图和输入框的使用
原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/17297721 登录界面一个帐号/密码输入框或者主角命名框是少不了的.这节就来 ...
- 一、STM32启动文件详细解析
一.STM32启动文件详细解析 STM32启动文件详细解析(V3.5.0) 以:startup_stm32f10x_hd.s为例 [cpp] view plain copy ;************ ...
- Android开发之点九图的制作说明
总结: 左边的点代表垂直拉伸的区域, 上边的点代表水平拉伸的区域. 右边的点代表文字等的垂直可可显示区域. 下边的点代表文字等的水平可显示区域. 左上重合的区域就是拉伸区域. 右下重合的区域就是显示区 ...
- bam文件读取_SAM/BAM 格式文件内容解析
一.首先需要知道以下几个知识点: 1.1-based coordinate system A coordinate system where the rst base of a sequence is ...
最新文章
- LTE网元间控制面协议
- 精简 opencv python_01_opencv_python_基本图像处理
- 64位Ubuntu kylin 16.04显示CPU内存使用率
- 如何解决设置虚拟服务器不生效,nginx虚拟主机的配置不生效
- SpringMVC整合fastjson、easyui 乱码问题
- 川大NLP博士生被华为以200万年薪录用!分享以下科研及论文写作经验
- Python(51)_从100打印到0
- springmvc + ibatis 框架的搭建
- Android第三十八天
- 甘超波:NLP抽离与结合
- 在Unity中使用Photon(网络多人联机)
- vue 中 用showdown预览markdown文件,并用highlight.js 实现代码高亮
- Java汉字按照拼音排序
- PS制作文字扫描效果(仿旧效果)
- Unity (一) 下载与安装
- 代码写的多了就能成为一名优秀程序员吗
- SAP中重复制造生产计划编制——再谈工时计算
- 从APS的角度理解什么是按库存生产(MTS)计划?解释,缺点和示例
- 关于幂级数求导/积分后幂级数收敛域变化的问题
- 成绩登记与查询系统App
热门文章
- 往事随风***工具包2012情人节专版
- win7系统未响应卡住_win7系统总是死机运行程序未响应的恢复步骤
- 11种超好的WordPress网站分析方案
- 阅读名著《万物重构》读后感3000字
- 【GD32】从零开始学GD32单片机高级篇——外部存储器控制器EXMC详解+SDRAM读写例程
- 2020美团(开水团)面试题真题整理最新最全~持续更新中~~~
- 深度学习计划(3)图片质量评估PSNR和SSIM
- ——工欲善其事必先利其器
- Eureka Server 常用接口
- Cozmo机器人之ROS和AI体验(训练)营-2019-ROS暑期学校