android png idat 还原,png IDAT数据块还原问题
png由于fireworks生成的数再进一步处理,还原出来的数据还要计算下
这两天查遍了互联网,和无数次生成数据手工计算还原,希望找到个规律
从一篇提示想到手工猜测,我用php写了一个模板,枚举了很多种算法。直接显示结果
如果能还原出来跟fireworks看到的值一样说明民成功的。
这里有一个仁兄提问,他说是位运算
我后来发现是加减运算
http://tieba.baidu.com/f?kz=859640399
01 就是后面一个RGBA加上前边一个RGBA
02 就是下面原始数据加上上面解码出来的RGBA
04 在下面有说明
03 是前边一个字节加上上边对应一个字节然后除2 然后加上本字节 比如(前R+上R)/2+R(本字节R)
这个适合真彩情况,window画图生成的png并没有编码,直接放RRGGBBAA
我推理了一天才发现03这种情况 所以如果png IDAT 遇到真彩解码或编码问题可以多试下
行头为04数据格式
00
C
B
04
A
X
Type byte
Filter name
Predicted value
0
None
Zero (so that the raw byte value passes through unaltered)
1
Sub
Byte A (to the left)
2
Up
Byte B (above)
3
Average
Mean of bytes A and B, rounded down
4
Paeth
A, B, or C, whichever is closest to p = A + B − C
Table 1. Predictor states used for differential encoding in the PNG image format.
The Paeth filter computes a simple linear function of the three neighboring pixels (a, b, c), then
chooses as predictor the neighboring pixel closest to the computed value as defined by the
following pseudo-code:
// Input: color values a,b, and c as illustrated in Figure 3
// a = left, b = above, c = upper left
// Output: a paeth-prediction for a,b, and c
04方式求出X的伪代码
paeth_predict(a,b,c)
p := a+b-c
pa := abs(p-a)
pb := abs(p-b)
pc := abs(p-c)
IF (pa<=pb AND pa<=pc) p := a
ELSE IF (pb <= pc) p := b
ELSE p := c
paeth_predict := p
Compression of a pixel value x dependent on its neighbors a,b, and c works by calculating
compressed(x) = x - paeth_predict(a,b,c)
and decompression works by reversing the formula to
uncompressed(x) = compressed(x) + paeth_predict(a,b,c).
http://en.wikipedia.org/wiki/Portable_Network_Graphics
http://ngs.ics.uci.edu/teaching/winter2011/Multimedia/textbook/MM_Chapter_lossycomp_100220.pdf
具体看下面这里
http://www.w3.org/TR/PNG/#9Filters
android png idat 还原,png IDAT数据块还原问题相关推荐
- 【Android 逆向】使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )
文章目录 一.从 Android 应用数据目录中拷贝 SQlite3 数据库文件 二.使用 DB Browser 工具打开 SQlite3 数据库文件 一.从 Android 应用数据目录中拷贝 SQ ...
- Android系统镜像备份与还原并转发数据
你拿到一台测试机,觉得系统不错挺好用,想要把里面的镜像拷贝出来,然后买一台新手机刷入进去.然后屏蔽原来系统的数据转发并把数据转发到自己的服务器上,有没有可能呢?答案是有的,这篇文章说的就是这方面的内容 ...
- 【Android 应用开发】Paint 滤镜原理 之 图像结构 ( 图片文件二进制分析 | PNG文件结构 | 数据块结构 | IHDR 数据块详解 )
文章目录 图形文件准备 ( PNG 文件 ) PNG 文件信息分类 数据块结构 IHDR 数据块 简介 IHDR 数据块 结构 图形文件准备 ( PNG 文件 ) 分析的文件准备 : 1.创建文件 : ...
- PNG文件编码解析之PNG文件格式中的所有数据块以及标识
图片版 文字版 数据块 十进制 十六进制 cHRM 99 72 82 77 63 48 52 4D gAMA 103 65 77 65 67 4 ...
- Android学习笔记44:JSON数据解析
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种理想的数据交换格式. 本文将主要介绍在Android ...
- Oracle 数据块损坏与恢复具体解释
1.什么是块损坏: 所谓损坏的数据块,是指块没有採用可识别的 Oracle 格式,或者其内容在内部不一致. 通常情况下,损坏是由硬件故障或操作系统问题引起的.Oracle 数据库将损坏的块标识为&qu ...
- 解析oracle的dump文件,读懂数据块dump文件信息
尊重作者著作,转自http://blog.csdn.net/guoyjoe/article/details/8567076 -------------------------------------- ...
- MongoDB数据备份还原,及docker中MongoDB备份还原
一: MongoDB数据备份 在Mongodb中我们使用mongodump命令来备份MongoDB数据.该命令可以导出所有数据到指定目录中. mongodump命令可以通过参数指定导出的数据量级转存的 ...
- 关于 RMAN 备份 数据块 一致性的讨论
今天和 杭州恒生 的一个朋友讨论一个RMAN 在备份时数据块一致性的问题. 关于RMAN 的备份原理参考blog: RMAN 系列(一)---- RMAN 体系结构概述 http://blog.csd ...
最新文章
- hashmap实现原理_Java中HashMap底层实现原理(JDK1.8)源码分析
- 降Mail十八章(上)
- java创建solr core_Solr定义core.properties
- angular 代码高亮_angular 搜索/查找关键字高亮
- mysql 5.6 分区_Mysql5.6—分区表及独享表空间
- 【渝粤教育】 国家开放大学2020年春季 2772家畜环境卫生与设施 参考试题
- http协议与web本质
- Java架构师知识体系汇总
- 高性能微服务 Dubbo RPC Redis 分布式框架
- linux下mysql安装、目录结构、配置
- arrive 和reach 的区别
- bp matlab预测结果差,BP神经网络 预测 精度差
- 基于51单片机的GPS公交自动报站系统
- jQuery的ajax教程
- 科目二 侧方位停车 流程记录 LTS
- spring 自动装配 bean 有哪些方式?
- kubectl命令的使用、滚动更新
- 视频演示-Snapper快捷优秀的音频预览播放器演示
- 计算机待机时间长黑屏怎么办,电脑黑屏?如何解决?
- 高清卫星影像DEM各个遥感卫星数据免费下载,3款软件4个网站推荐给你,从此不再为数据发愁
热门文章
- vs2015+TortoiseSVN安装教程
- H5 移动端 测试方法
- Fisher线性判别分析原理解析及其Python程序实现两例
- 如何恢复vscode的默认配置_VS Code使用之基本设置与配置详解
- 报错: Ambiguous method call. Both
- BUUCTF RE reverse2
- oracle 19c驱动和18c的区别,什么是Oracle 18c的版本号?(What is the version number of Oracle 18c?)...
- 讲座回顾丨超融合智能边缘平台
- 倍福--数据类型变化
- prolog应用:解决爱因斯坦“斑马”问题