前情提要

在很久之前点九图还有两条黑边,那时候写了一个解析的demo:
iOS_NinePatch

后来黑边没有了,问安卓的同事,说是“编译”过了。具体是怎么“编译”的,他们也不知道,于是事情就这样搁置了一年左右。

直到不久前,需要用到一些图片拉伸和内容区域限定,实在是羡慕安卓的点九图不需要单独写配置项,于是决定解决这个问题。

技术要点

通过阅读Android源码,发现下面几点:

  • 信息保存在一个叫npTc的png chunk里
  • 使用Res_png_9patch 这个结构来读取和验证点九图的信息。

文件分析

通过iHex读取素材:

结合PNG Metadata的文档,获取整个npTcchunk的数据,对比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)解析相关推荐

  1. Android点九图(.9.png)的特点和制

    看了一下,觉得这个NinePng九图神器App还不错,帮忙推荐一下. 转自http://blog.csdn.net/sasoritattoo/article/details/42457619 本文主要 ...

  2. 点九图完全解析-附官方工具

    搞懂点九图看这一篇就够了. 内容简介 你真的了解android的点九图吗?读完这一篇,再来回答这个问题,废话少说,先看看本文要讲的主要内容: 点九图简介 下图是一张android系统中的典型点九切图, ...

  3. Android 点九图机制讲解及在聊天气泡中的应用

    点九图简介 Android为了使用同一张图作为不同数量文字的背景,设计了一种可以指定区域拉伸的图片格式".9.png",这种图片格式就是点九图. 注意:这种图片格式只能被使用于An ...

  4. python特性高移植性_Python特性图文盘点|微胜教育《九大编程语言全解析》系列...

    原标题:Python特性图文盘点|微胜教育<九大编程语言全解析>系列 ​ 又到了每周<九大编程语言全解析>的时候了,小伙伴们五一马上到了,想好去哪浪了吗? 今天我们盘Pytho ...

  5. android .9图片在代码中的设置,Android点九图总结以及在聊天气泡中的使用

    编辑推荐: 本文来自于腾讯云,介绍了点九图的本质,聊天气泡中使用点九图,其它问题等. 1. 点九图介绍 这一块是对点九图的简单介绍,如果对这块已经有了解的话,可以直接跳到2,看看聊天气泡中如何使用点九 ...

  6. 【玩转cocos2d-x之三十】点九图和输入框的使用

    原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/17297721 登录界面一个帐号/密码输入框或者主角命名框是少不了的.这节就来 ...

  7. 一、STM32启动文件详细解析

    一.STM32启动文件详细解析 STM32启动文件详细解析(V3.5.0) 以:startup_stm32f10x_hd.s为例 [cpp] view plain copy ;************ ...

  8. Android开发之点九图的制作说明

    总结: 左边的点代表垂直拉伸的区域, 上边的点代表水平拉伸的区域. 右边的点代表文字等的垂直可可显示区域. 下边的点代表文字等的水平可显示区域. 左上重合的区域就是拉伸区域. 右下重合的区域就是显示区 ...

  9. bam文件读取_SAM/BAM 格式文件内容解析

    一.首先需要知道以下几个知识点: 1.1-based coordinate system A coordinate system where the rst base of a sequence is ...

最新文章

  1. LTE网元间控制面协议
  2. 精简 opencv python_01_opencv_python_基本图像处理
  3. 64位Ubuntu kylin 16.04显示CPU内存使用率
  4. 如何解决设置虚拟服务器不生效,nginx虚拟主机的配置不生效
  5. SpringMVC整合fastjson、easyui 乱码问题
  6. 川大NLP博士生被华为以200万年薪录用!分享以下科研及论文写作经验
  7. Python(51)_从100打印到0
  8. springmvc + ibatis 框架的搭建
  9. Android第三十八天
  10. 甘超波:NLP抽离与结合
  11. 在Unity中使用Photon(网络多人联机)
  12. vue 中 用showdown预览markdown文件,并用highlight.js 实现代码高亮
  13. Java汉字按照拼音排序
  14. PS制作文字扫描效果(仿旧效果)
  15. Unity (一) 下载与安装
  16. 代码写的多了就能成为一名优秀程序员吗
  17. SAP中重复制造生产计划编制——再谈工时计算
  18. 从APS的角度理解什么是按库存生产(MTS)计划?解释,缺点和示例
  19. 关于幂级数求导/积分后幂级数收敛域变化的问题
  20. 成绩登记与查询系统App

热门文章

  1. 往事随风***工具包2012情人节专版
  2. win7系统未响应卡住_win7系统总是死机运行程序未响应的恢复步骤
  3. 11种超好的WordPress网站分析方案
  4. 阅读名著《万物重构》读后感3000字
  5. 【GD32】从零开始学GD32单片机高级篇——外部存储器控制器EXMC详解+SDRAM读写例程
  6. 2020美团(开水团)面试题真题整理最新最全~持续更新中~~~
  7. 深度学习计划(3)图片质量评估PSNR和SSIM
  8. ——工欲善其事必先利其器
  9. Eureka Server 常用接口
  10. Cozmo机器人之ROS和AI体验(训练)营-2019-ROS暑期学校