Algorithm 如何完全从头开始实现PNG解码器
为了便于学习,我开始研究PNG编码/解码库,所以我想手工实现它的每个部分 我花了很长时间,但现在我有点卡住了。以下是我已经成功实施的事项:Algorithm 如何完全从头开始实现PNG解码器,algorithm,image-processing,png,zlib,deflate,Algorithm,Image Processing,Png,Zlib,Deflate,为了便于学习,我开始研究PNG编码/解码库,所以我想手工实现它的每个部分 我花了很长时间,但现在我有点卡住了。以下是我已经成功实施的事项: 我可以加载一个PNG二进制文件并遍历它的字节 我可以读取签名和IHDR块中的元数据 我可以读取IDAT块并将图像数据连接到缓冲区中 我可以从上面提到的图像数据中读取和解释zlib头 这就是我被卡住的地方。我隐约知道从这里开始的步骤是: 根据zlib压缩数据的标题提取zlib压缩数据 找出使用的过滤方法并“撤消”它们以获取原始数据 如果一切正常,现在我有
- 我可以加载一个PNG二进制文件并遍历它的字节
- 我可以读取签名和IHDR块中的元数据
- 我可以读取IDAT块并将图像数据连接到缓冲区中
- 我可以从上面提到的图像数据中读取和解释zlib头
- 根据zlib压缩数据的标题提取zlib压缩数据
- 找出使用的过滤方法并“撤消”它们以获取原始数据
- 如果一切正常,现在我有了原始RGB数据,格式为
[,,等…]
- 是否有任何易于理解的实现(可能有示例)或zlib提取指南,因为我发现官方规范很难理解
- 同一文件中是否可以使用多个筛选方法?如何解决这些问题?如何计算这些不同过滤部分的“边界”
- 我对最终数据的理解正确吗?alpha通道或使用调色板时如何