查找支持文本像素描述与常见图像格式互转的Unix命令
相关工具线索
你记忆里的这套工具是早年Unix/Solaris环境下广泛预装的Netpbm工具集,和你描述的特性完全匹配:
- 支持JPEG、BMP、TIFF、PNG等绝大多数常见图像格式,和纯文本像素描述文件双向转换
- 转换输出的纯文本像素格式(ASCII编码的PPM/PNM格式)规则非常简单:除了3行极简固定头之外,逐行存储单个像素的红、绿、蓝三通道数值,全部用ASCII数字表示,完全不需要钻研各类复杂图像格式的编码规范,用任意编程语言逐行读写就能完成图像处理
- 常用的对应命令:
jpegtopnm、bmptopnm等格式专属导入命令:把对应格式的二进制图像转成通用PNM格式pnmtoplainpnm:把二进制PNM转成纯ASCII的像素文本,直接就能逐行读取像素值pnmtojpeg、pnmtobmp等格式专属导出命令:把处理完成的PNM文件转回常规图像格式
这套工具的纯文本像素格式几乎没有学习成本,合法文件只需要在像素值前面加3行固定头即可:
第一行固定写
P3,标记是ASCII格式的RGB像素文件
第二行写图像的宽度、高度,两个数字用空格分隔
第三行写通道最大值,普通8位图像直接写255
后续内容按从左到右、从上到下的扫描顺序,逐行写每个像素的R、G、B三个0-255范围的整数值即可
比如一个1×1大小纯红色图像的文本文件内容只有几行:
P3 1 1 255 255 0 0
把上述内容存为文本文件,直接调用pnmtojpeg就能导出为正常的JPG图像,不需要编写任何图像编码解码逻辑,和你记忆里的使用体验完全一致。
补充说明:早年Solaris发行版里偶尔会把配套的JPEG处理子工具以djpeg/cjpeg的别名提供,这两个是Netpbm依赖的JPEG编解码组件,单独用也能输出类似的文本像素内容,但完整的多格式支持、文本回写为图像的能力还是来自Netpbm工具集。另外后来的ImageMagick也能实现类似功能,但它的预装时间远晚于Netpbm,不是你数十年前在Solaris上接触到的版本。
内容的提问来源于stack exchange,提问作者David G. Pickett
相关产品推荐
相关产品推荐

