PNG图像chunk概述&Python获取PNG图片的offset

通过本篇文章可以了解到如下知识点:

PNG图片编码; Python图片库; ImageMagick命令行工具简单使用

背景

公司产品同事反馈有个商品的缩略图都不正常,缩略之后核心内容没有位于图片的正中间,导致图片不知所云,具体表现如下

问题现场

原图:原图
缩略图:缩略图
这个缩略图正确的缩略结果应该是缩略出一张100x100且裁剪位置位于位于图片的正中间,这样就能保证缩略图也能基本展示商品,但是这个缩略结果明显就是不对的。那么问题出现在哪里呢?

定位问题

这里推荐一个工具ImageMagick的命令行工具集 magickdoc,这里我们使用其中的identify工具查看原图的详细信息

identify -verbose https://i-blog.csdnimg.cn/blog_migrate/6d187dc11f2628b50ff38333c9092d57.png

结果如下:
其他结果都不重要,主要看Properties段

解出PNG图片IDAT: pngcheck.exe -v C:\Users\Administrator\Desktop\pwn\image\10.png File: C:\Users\Administrator\Desktop\pwn\image\10.png (9352507 bytes) chunk IHDR at offset 0x0000c, length 13 3840 x 2160 image, 32-bit RGB+alpha, non-interlaced chunk sRGB at offset 0x00025, length 1 rendering intent = perceptual chunk gAMA at offset 0x00032, length 4: 0.45455 chunk pHYs at offset 0x00042, length 9: 5669x5669 pixels/meter (144 dpi) chunk IDAT at offset 0x00057, length 65445 zlib: deflated, 32K window, fast compression chunk IDAT at offset 0x10008, length 65524 chunk IDAT at offset 0x20008, length 65524 chunk IDAT at offset 0x30008, length 65524 chunk IDAT at offset 0x40008, length 65524 chunk IDAT at offset 0x50008, length 65524 chunk IDAT at offset 0x60008, length 65524 chunk IDAT at offset 0x70008, length 65524 chunk IDAT at offset 0x80008, length 65524 chunk IDAT at offset 0x90008, length 65524 chunk IDAT at offset 0xa0008, length 65524 chunk IDAT at offset 0xb0008, length 65524 chunk IDAT at offset 0xc0008, length 65524 chunk IDAT at offset 0xd0008, length 65524 chunk IDAT at offset 0xe0008, length 65524 chunk IDAT at offset 0xf0008, length 65524 chunk IDAT at offset 0x100008, length 65524 chunk IDAT at offset 0x110008, length 65524 chunk IDAT at offset 0x120008, length 65524 chunk IDAT at offset 0x130008, length 65524 chunk IDAT at offset 0x140008, length 65524 chunk IDAT at offset 0x150008, length 65524 chunk IDAT at offset 0x160008, length 65524 chunk IDAT at offset 0x170008, length 65524 chunk IDAT at offset 0x180008, length 65524 chunk IDAT at offset 0x190008, length 65524 chunk IDAT at offset 0x1a0008, length 65524 chunk IDAT at offset 0x1b0008, length 65524 chunk IDAT at offset 0x1c0008, length 65524 chunk IDAT at offset 0x1d0008, length 65524 chunk IDAT at offset 0x1e0008, length 65524 chunk IDAT at offset 0x1f0008, length 65524 chunk IDAT at offset 0x200008, length 65524 chunk IDAT at offset 0x210008, length 65524 chunk IDAT at offset 0x220008, length 65524 chunk IDAT at offset 0x230008, length 65524 chunk IDAT at offset 0x240008, length 65524 chunk IDAT at offset 0x250008, length 65524 chunk IDAT at offset 0x260008, length 65524 chunk IDAT at offset 0x270008, length 65524 chunk IDAT at offset 0x280008, length 65524 chunk IDAT at offset 0x290008, length 65524 chunk IDAT at offset 0x2a0008, length 65524 chunk IDAT at offset 0x2b0008, length 65524 chunk IDAT at offset 0x2c0008, length 65524 chunk IDAT at offset 0x2d0008, length 65524 chunk IDAT at offset 0x2e0008, length 65524 chunk IDAT at offset 0x2f0008, length 65524 chunk IDAT at offset 0x300008, length 65524 chunk IDAT at offset 0x310008, length 65524 chunk IDAT at offset 0x320008, length 65524 chunk IDAT at offset 0x330008, length 65524 chunk IDAT at offset 0x340008, length 65524 chunk IDAT at offset 0x350008, length 65524 chunk IDAT at offset 0x360008, length 65524 chunk IDAT at offset 0x370008, length 65524 chunk IDAT at offset 0x380008, length 65524 chunk IDAT at offset 0x390008, length 65524 chunk IDAT at offset 0x3a0008, length 65524 chunk IDAT at offset 0x3b0008, length 65524 chunk IDAT at offset 0x3c0008, length 65524 chunk IDAT at offset 0x3d0008, length 65524 chunk IDAT at offset 0x3e0008, length 65524 chunk IDAT at offset 0x3f0008, length 65524 chunk IDAT at offset 0x400008, length 65524 chunk IDAT at offset 0x410008, length 65524 chunk IDAT at offset 0x420008, length 65524 chunk IDAT at offset 0x430008, length 65524 chunk IDAT at offset 0x440008, length 65524 chunk IDAT at offset 0x450008, length 65524 chunk IDAT at offset 0x460008, length 65524 chunk IDAT at offset 0x470008, length 65524 chunk IDAT at offset 0x480008, length 65524 chunk IDAT at offset 0x490008, length 65524 chunk IDAT at offset 0x4a0008, length 65524 chunk IDAT at offset 0x4b0008, length 65524 chunk IDAT at offset 0x4c0008, length 65524 chunk IDAT at offset 0x4d0008, length 65524 chunk IDAT at offset 0x4e0008, length 65524 chunk IDAT at offset 0x4f0008, length 65524 chunk IDAT at offset 0x500008, length 65524 chunk IDAT at offset 0x510008, length 65524 chunk IDAT at offset 0x520008, length 65524 chunk IDAT at offset 0x530008, length 65524 chunk IDAT at offset 0x540008, length 65524 chunk IDAT at offset 0x550008, length 65524 chunk IDAT at offset 0x560008, length 65524 chunk IDAT at offset 0x570008, length 65524 chunk IDAT at offset 0x580008, length 65524 chunk IDAT at offset 0x590008, length 65524 chunk IDAT at offset 0x5a0008, length 65524 chunk IDAT at offset 0x5b0008, length 65524 chunk IDAT at offset 0x5c0008, length 65524 chunk IDAT at offset 0x5d0008, length 65524 chunk IDAT at offset 0x5e0008, length 65524 chunk IDAT at offset 0x5f0008, length 65524 chunk IDAT at offset 0x600008, length 65524 chunk IDAT at offset 0x610008, length 65524 chunk IDAT at offset 0x620008, length 65524 chunk IDAT at offset 0x630008, length 65524 chunk IDAT at offset 0x640008, length 65524 chunk IDAT at offset 0x650008, length 65524 chunk IDAT at offset 0x660008, length 65524 chunk IDAT at offset 0x670008, length 65524 chunk IDAT at offset 0x680008, length 65524 chunk IDAT at offset 0x690008, length 65524 chunk IDAT at offset 0x6a0008, length 65524 chunk IDAT at offset 0x6b0008, length 65524 chunk IDAT at offset 0x6c0008, length 65524 chunk IDAT at offset 0x6d0008, length 65524 chunk IDAT at offset 0x6e0008, length 65524 chunk IDAT at offset 0x6f0008, length 65524 chunk IDAT at offset 0x700008, length 65524 chunk IDAT at offset 0x710008, length 65524 chunk IDAT at offset 0x720008, length 65524 chunk IDAT at offset 0x730008, length 65524 chunk IDAT at offset 0x740008, length 65524 chunk IDAT at offset 0x750008, length 65524 chunk IDAT at offset 0x760008, length 65524 chunk IDAT at offset 0x770008, length 65524 chunk IDAT at offset 0x780008, length 65524 chunk IDAT at offset 0x790008, length 65524 chunk IDAT at offset 0x7a0008, length 65524 chunk IDAT at offset 0x7b0008, length 65524 chunk IDAT at offset 0x7c0008, length 65524 chunk IDAT at offset 0x7d0008, length 65524 chunk IDAT at offset 0x7e0008, length 65524 chunk IDAT at offset 0x7f0008, length 65524 chunk IDAT at offset 0x800008, length 65524 chunk IDAT at offset 0x810008, length 65524 chunk IDAT at offset 0x820008, length 65524 chunk IDAT at offset 0x830008, length 65524 chunk IDAT at offset 0x840008, length 65524 chunk IDAT at offset 0x850008, length 65524 chunk IDAT at offset 0x860008, length 65524 chunk IDAT at offset 0x870008, length 65524 chunk IDAT at offset 0x880008, length 65524 chunk IDAT at offset 0x890008, length 65524 chunk IDAT at offset 0x8a0008, length 65524 chunk IDAT at offset 0x8b0008, length 65524 chunk IDAT at offset 0x8c0008, length 65524 chunk IDAT at offset 0x8d0008, length 65524 chunk IDAT at offset 0x8e0008, length 46367 private (invalid?) row-filter type (157) (warning) private (invalid?) row-filter type (157) (warning) private (invalid?) row-filter type (157) (warning) zlib: inflate error = -3 (data error) ERRORS DETECTED in C:\Users\Administrator\Desktop\pwn\image\10.png
最新发布
09-06
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值