如何使用ImageMagick将图像转像素十六进制文本再还原为图像
需求实现方案
1. 提取像素坐标与十六进制颜色生成单行文本
直接对convert命令的输出做管道处理,组合awk工具即可完成提取,完整命令如下:
convert myimage.png txt: | awk -F '[: ]+' '{printf "%s,%s ", $1, $3}' > pixel.txt
命令说明:
- awk以冒号、空格作为分隔符,直接取第1段(坐标值,如
7,20)和第3段(十六进制颜色值,如#C8FBFBFF),拼接为要求的格式输出 - 通过printf加空格分隔,最终输出为无换行的单行内容存入
pixel.txt,和你需要的格式完全匹配。
2. 从像素文本文件还原为图像
没有直接兼容你自定义格式的convert pixel.txt image.png命令,你需要先将自定义格式转换为ImageMagick可识别的标准像素文本格式,再生成图像,步骤如下:
- 先获取原图宽高,执行命令:
identify -format "%w %h" myimage.png,记返回的两个数值为W(宽)、H(高) - 转换为标准像素格式文件:
# 先写入头信息 echo "# ImageMagick pixel enumeration: W,H,255,srgba" > standard_pixel.txt # 替换上面命令里的W、H为你查到的实际数值,再执行下面的内容转换命令 cat pixel.txt | tr ' ' '\n' | awk -F ',' '{print $1","$2": (" strtonum("0x"substr($3,2,2)) "," strtonum("0x"substr($3,4,2)) "," strtonum("0x"substr($3,6,2)) "," strtonum("0x"substr($3,8,2))/255 ") " $3}' >> standard_pixel.txt
- 执行标准convert命令生成图片:
convert standard_pixel.txt output.png
如果不想手动处理格式,也可以用简单的Python脚本读取像素文件逐点绘图,生成图片的逻辑更可控。
内容的提问来源于stack exchange,提问作者Jiro Saito
相关产品推荐
相关产品推荐

