从当前项目中聊开一下

国庆期间,研究了 indexed mode 下的 PNG transparency 的内部格式(最近的项目需要生成特定格式的PNG文件),了解了 tRNS 与 Alpha 通道的不同,也写下了如下的 探索性代码。

生成的 Indexed mode PNG 有 GIMP 中可以看到 颜色表

同时过程中 IDAT Chunk 需要用到 zlib 压缩就看了一下 zlib 的代码,只是看的过程中也想起之前工作中的一些场景。

场景一:年初,评审开发人员的方案时,我提出 “表驱动” 的方案,结果 所有人都一脸蒙(显然是没有 翻过 《代码大全》的 Code Monkey)

我们来看一下 zlib 实现压缩时用到的 “表驱动” 方案(函数表)

我们平常所知道的 压缩级别 0-9 不就对应了 函数表中 0~9 的索引了 么?

 

场景二:

常常我都会和开发聊到 状态机,但绝大多数人 都是没有说到 “点”,这些人中要么 没有写过 demo,要么只是看了一些别人的博客,也有一些人 还不知道这个概念

我从这次看 zlib 的代码中 拿一个例子,解压时(或者通用来说 decode 各种 按某种协议encoded 的data 时)就是一个 从 read data stream 上 read 的到数据去决断当前的 最新状态 再执行对应的 decode 操作

 

PS: 高效的方法是,这样的研究场景(参考已经有的 XX 实现),不需要去 github 下载代码,对应的的 ubuntu 中 打开 deb-src 可以下载对应 软件包 的源代码,也可以下载到 调试符号 dbgsym。去了解你的工具,而不是只有代码还是代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值