如何修改ImageMagick命令正确导出灰度图像的像素?
解决方案
修正后的ImageMagick命令
直接指定输出为单通道灰度格式(Gray:)而非RGB格式,即可得到正确的单字节像素流:
magick z-gray-1x3.png -depth 8 Gray:output.txt
后续验证命令(保持原流程)
执行完上述命令后,再运行你原来的处理脚本:
hexdump -xv output.txt | sed -E 's/^[^ ]+//' | tr -d ' \n'; echo
此时输出会符合你的预期:007f00ff
问题背景
你有一个1x3的灰度图像文件z-gray-1x3.png,三个像素的灰度值分别为0x00、0x7f、0xff。之前使用RGB:格式输出时,ImageMagick会将每个灰度像素扩展为R、G、B三个相同值的字节(共9字节数据),导致后续hexdump处理后得到混乱的输出;而Gray:格式会直接输出单通道的灰度字节,每个像素对应1字节,生成3字节的目标数据,加上hexdump为凑齐偶数位数添加的填充字节00,最终得到你期望的结果。
内容的提问来源于stack exchange,提问作者Jonathan Levi
相关产品推荐
相关产品推荐

