如何将没有颜色的图像大规模转换为灰度图像?

时间:2014-04-13 22:28:17

标签: imagemagick jpeg grayscale file-conversion imagemagick-convert

我有一个包含大量JPG图像(纸质文档扫描)的目录,这些图像目前都是sRGB。

许多但不是全部实际上并没有颜色,或者仅将颜色作为背景(例如彩色纸或略微偏白的扫描)。

我想将这些图像(但不是具有真实颜色的图像)大规模转换为灰度,以节省磁盘空间。

我猜想有一些方法可以用ImageMagick做到这一点,但我不知道怎么做。建议?

1 个答案:

答案 0 :(得分:2)

Imagemagick的mogrify实用程序将是最简单的解决方案。

mogrify -path /path/to/output/dir/ -colorspace Gray /path/to/source/files

识别哪种文档符合真实颜色的能力可能非常本地化。我建议评估每个图像的颜色计数,并仅转换低于给定阈值的图像。

THRESHOLD=1024
FILES=`ls /path/to/source/files`
for FILE in ${FILES}; do
COLORS=`identify -format %k "$FILE"`
if [[ $COLORS -lt $THRESHOLD ]]; then
  mogrify -path /path/to/output/dir/ -colorspace Gray "$FILE"
fi

评估预处理选项以降低噪音也是明智之举。 Monochrome最容易申请,但other great solutions存在。