PocketBook 611 是一款黑白电子书阅读器。PocketBook 611(以及在推出触摸显示屏之前的类似型号)使用非常特殊的 BMP 格式作为其所谓的“关机徽标”(电子墨水显示屏关机时的壁纸)。
我能够使用 Paint.NET 创建兼容的 BMP 文件,但我想自动化我的工作流程并改用 ImageMagick。正确的 BMP 格式通过file
以下方式检测:
$ file good.bmp
good.bmp: PC bitmap, Windows 3.x format, 600 x 800 x 8, resolution 3779 x 3779 px/m, 256 important colors, cbSize 481078, bits offset 1078
但是当我使用 ImageMagick(例如)创建 BMP 文件时convert input.jpg output.bmp
,PocketBook 上出现有关位图图像格式不兼容的错误。
答案1
使用以下convert
命令:
convert input.jpg -type Grayscale -colorspace Gray -colors 255 -compress None BMP3:output.bmp
convert
用。。。来代替magick
如果您的 ImageMagick 安装不包含convert
。
以脚本形式实现自动化:
#!/usr/bin/env bash
if [[ $# -lt 1 ]]
then
echo "Specify filename"
exit 1
fi
while [[ $# -gt 0 ]]
do
from="$1"
to="${1%.*}.bmp"
shift
echo "'$from' -> '$to'"
convert "$from" -type Grayscale -colorspace Gray \
-colors 255 -compress None BMP3:"$to"
done
该脚本可以在输入文件目录中使用,如下所示:./pocketbook-convert.sh *.jpg *.png
如果图像已经被裁剪和旋转,ImageMagick 也可以将它们调整为正确的大小:
convert "$from" \
-gravity center -resize 600x800^ -extent 600x800 \
-type Grayscale -colorspace Gray -colors 255 -compress None BMP3:"$to"
解释
BMP3:
需要前缀来指定BMP 格式版本,因为默认BMP
使用常规格式,即 BMP 版本 4。另请参阅格式列表identify -list format
:
$ identify -list format | grep BMP
BMP* BMP rw- Microsoft Windows bitmap image
BMP2* BMP rw- Microsoft Windows bitmap image (V2)
BMP3* BMP rw- Microsoft Windows bitmap image (V3)
WBMP* WBMP rw- Wireless Bitmap (level 0) image
identify -verbose
我通过比较好文件和坏文件的输出,找出了其他选项的确切参数。此外,关于 DirectClass 和 PseudoClass 的这个答案帮助理解颜色图和颜色空间的情况。输出的相关部分identify -verbose
:
$ identify -verbose good.bmp | less
Format: BMP3 (Microsoft Windows bitmap image (V3))
Class: PseudoClass
Colorspace: sRGB
Type: Grayscale
Colors: 250
Compression: None
Filesize: 481078B
Filesize
是相关的,因为使用“正确”选项,所有文件的大小几乎完全相同,约为 470 千字节。
灰度 BMP 转换选项的文档:-type Grayscale
,-colorspace Gray
,-colors 255
, 和-compress None
。