从人民广场--市政府站,一条很适合骑行的笔直的路
一,什么是mag
https://man.he.net/man1/macptopbm
macptopbm - 将 MacPaint 文件转换为可移植位图(Portable Bitmap)描述 (DESCRIPTION)读取一个 MacPaint 文件作为输入,生成一个可移植位图(PBM)作为输出。macptopbm 是 Netpbm 工具集中的一个经典命令,主要作用是将早期的 MacPaint 格式图片转换为标准的 PBM(Portable Bitmap)位图格式。#先查看属于具体什么包,这里看到属于netpbm-progs[root@bogon yum.repos.d]# yum provides */macptopbmLoaded plugins: fastestmirrorLoading mirror speeds from cached hostfilenetpbm-progs-10.79.00-7.el7.x86_64 : Tools for manipulating graphics files in netpbm supported formatsRepo : centosMatched from:Filename : /usr/bin/macptopbmnetpbm-progs-10.79.00-7.el7.x86_64 : Tools for manipulating graphics files in netpbm supported formatsRepo : @centosMatched from:Filename : /usr/bin/macptopbm#安装yum install -y netpbm-progs
二,选项
[root@bogon yum.repos.d]# macptopbm --hmacptopbm: usage: macptopbm [-extraskip N] [macpfile]-extraskip 此标志用于解决从 Mac 环境传输文件到 Unix 环境时的一些问题。 大多数传输方法会保持 Mac 文件原样,但少数方法会在 Unix 文件的开头添加 "finderinfo"(查找器信息)数据。 这意味着在读取文件时需要额外跳过 128 个字节。需要留意的症状是:生成的 PBM 文件看起来会向一侧偏移。如果出现这种情况,请尝试使用 -extraskip 128,如果效果仍不理想,可以尝试其他数值。 所有标志(选项)都可以缩写为其最短的唯一前缀。
三,例子
1、环境准备
sudo yum install -y ImageMagick[root@bogon test]# ls1604808587070.jpg[root@bogon test]# convert 1604808587070.jpg -monochrome pbm:temp.pbm[root@bogon test]# ls -lthtotal 300K-rw-r--r-- 1 root root 175K May 30 14:47 temp.pbm-rw-r--r-- 1 root root 124K May 30 14:39 1604808587070.jpg[root@bogon test]# pbmtomacp temp.pbm > output.macppbmtomacp: 576 of 918 input columns will be outputpbmtomacp: 720 out of 1550 input rows will be output[root@bogon test]# ls -lthtotal 348K-rw-r--r-- 1 root root 47K May 30 14:47 output.macp-rw-r--r-- 1 root root 175K May 30 14:47 temp.pbm-rw-r--r-- 1 root root 124K May 30 14:39 1604808587070.jpg
- 看到如上就是转换成功:
pbmtomacp 顺利执行并生成了 output.macp 文件(大小为 47K)。 - 关于警告信息:
576 of 918 input columns... 这类提示并不是报错。这是因为原始的 MacPaint 格式对图片的尺寸有严格的限制(最大只支持 576x720 像素) - 原图分辨率比较大,所以工具自动把图片裁剪到了 MacPaint 能容纳的最大尺寸,这是该工具的正常行为。
#再转换pbm格式[root@bogon test]# macptopbm output.macp > pbmoutput.pbmmacptopbm: Input file does not start with a MacBinary header.macptopbm: MacPaint version (at offset 0): 00 00 00 00 (valid)macptopbm: Input file starts with valid MacPaint header.[root@bogon test]# ls1604808587070.jpg output.macp pbmoutput.pbm temp.pbm
修复偏移问题(-extraskip 选项)
正如刚才提供的翻译手册中提到的,从 Mac 系统传输某些文件到 Linux/Unix 时,可能会在文件开头多出 128 字节的 "finderinfo" 数据。这会导致转换出来的图片看起来“向一侧偏移”或错乱。此时可以使用 -extraskip 参数跳过这些多余字节:如果 128 依然不对,可以根据实际情况调整后面的数字。
# 尝试跳过前 128 个字节进行转换[root@bogon test]# macptopbm output.macp > pbmoutput.pbmmacptopbm: Input file does not start with a MacBinary header.macptopbm: MacPaint version (at offset 0): 00 00 00 00 (valid)macptopbm: Input file starts with valid MacPaint header.[root@bogon test]# ls1604808587070.jpg output.macp pbmoutput.pbm temp.pbm[root@bogon test]# vim pbmoutput.pbm [root@bogon test]# macptopbm -extraskip 128 output.macp > fixed_output.pbmmacptopbm: MacPaint version (at offset 0): 00 00 00 00 (valid)macptopbm: Input file starts with valid MacPaint header.macptopbm: Warning: Corrupt image data. 677 rows misaligned.[root@bogon test]# ls -lthtotal 452K-rw-r--r-- 1 root root 51K May 30 14:56 fixed_output.pbm-rw-r--r-- 1 root root 51K May 30 14:52 pbmoutput.pbm-rw-r--r-- 1 root root 47K May 30 14:47 output.macp-rw-r--r-- 1 root root 175K May 30 14:47 temp.pbm-rw-r--r-- 1 root root 124K May 30 14:39 1604808587070.jpg[root@bogon test]#
macptopbm output.macp > pbmoutput.pbm这是最基础的转换方式。它会从文件的第 0 个字节开始,按标准的 MacPaint 格式去读取数据。macptopbm -extraskip 128 output.macp > fixed_output.pbm加了 -extraskip 128参数后,程序会先跳过文件开头的 128 个字节(忽略掉前 128 个字节的数据),然后再开始读取真正的图片信息1。这个功能原本是为了解决早期从 Mac 系统传输文件到 Unix/Linux 时,多出来的 128 字节 "finderinfo"(元数据)导致图片错位的问题
看到的警告 Warning: Corrupt image data. 677 rows misaligned.(图像数据损坏,677行未对齐),是因为 output.macp 文件是由 ImageMagick 刚刚在 Linux 环境下生成的,它是一个纯净的、标准的 MacPaint 文件,开头并没有那多余的 128 字节。
强行加上 -extraskip 128 时,相当于把正常图片数据的“前半截”给硬生生切掉了。这就导致剩下的数据整体发生了位移,macptopbm 无法正确识别每一行的起始位置,所以才会报出“行未对齐”的错误。
四,补充
生成的 .macp 是一种极其复古的位图格式(诞生于上世纪80年代)。它的核心特点就是只能保存纯黑和纯白两种颜色(即 1-bit 黑白位图),不支持任何彩色或灰度信息1。
因此,如果现在打开 output.macp 查看,会发现它变成了一张高对比度的黑白像素画,这正是该格式的预期效果(我在windows或者linux并不能打开)。
参见 (SEE ALSO)picttoppm(1), pbmtomacp(1), pbm(5)
作者 (AUTHOR)版权所有 (C) 1988 by Jef Poskanzer。MacPaint 读取代码版权所有 (c) embed by Patrick J. Naughton (mailto:naughton@wind.sun.com)。
五,总结
macptopbm的测试讲解总共用到两个包,一个是macptopbm所属包,一个可以用来转换jpg为.macp格式。
sudo yum install -y netpbm-progssudo yum install -y ImageMagick
总结来说,macptopbm 是 Linux/Unix 系统下 Netpbm 图像处理工具集中的一个经典格式转换命令。
它的核心作用和特点可以归纳为以下三点:
- 专属的格式转换器主要功能是将上世纪80年代 MacPaint 软件专用的古老位图格式(
.macp),转换为通用的标准 PBM(Portable Bitmap)黑白位图格式。 - 复古的黑白位图处理由于
.macp 是一种极早期的图像格式,它只支持纯黑和纯白的像素点(1-bit)。因此,使用 macptopbm 转换出来的图片,必然是高对比度的黑白像素画,不包含任何彩色或灰度信息。 - 具备数据修复能力这个命令提供了一个特殊的
-extraskip 参数。在早期从 Mac 系统向 Unix/Linux 传输文件时,经常会多出 128 字节的元数据(finderinfo),导致图片错位。通过这个参数跳过多余字节,可以有效修复这类“花屏”或错位的老旧图片文件。
算是是现代 Linux 系统与几十年前的 Mac 经典绘图格式之间的一座“桥梁”。
最后的最后(Last but not least),欢迎交流:
关注公众号留言,或者在下方直接留言: