使用imagemagick将JPG图像从灰度转换为RGB

Not*_*nka 13 rgb command-line jpeg imagemagick grayscale

我正在尝试使用imagemagick命令行工具将灰度图像转换为RGB .

它适用于PNG图像,使用:

convert image.png -define png:color-type=2 result.png
Run Code Online (Sandbox Code Playgroud)

(摘自"如何使用image magick将灰度png图像从命令行转换为RGB")

虽然检查identify -format %r result.png仍然会返回DirectClass灰色,我可以看到它使用,gdalinfo因为现在列出了3个频段/频道:

gdalinfo [成功转换PNG]:

Driver: PNG/Portable Network Graphics
Files: result.png
Size is 567, 479
Coordinate System is `'
Image Structure Metadata:
  INTERLEAVE=PIXEL
Corner Coordinates:
Upper Left  (    0.0,    0.0)
Lower Left  (    0.0,  479.0)
Upper Right (  567.0,    0.0)
Lower Right (  567.0,  479.0)
Center      (  283.5,  239.5)
Band 1 Block=567x1 Type=Byte, ColorInterp=Red
Band 2 Block=567x1 Type=Byte, ColorInterp=Green
Band 3 Block=567x1 Type=Byte, ColorInterp=Blue
Run Code Online (Sandbox Code Playgroud)

但是,似乎该-define选项仅适用于PNG图像.

我的问题:如何为JPG图像实现相同的效果?

当我为JPG尝试上述命令时,它不起作用:

convert image.jpg -define jpg:color-type=2 result.jpg
Run Code Online (Sandbox Code Playgroud)

gdalinfo [转换JPG失败]:

Driver: JPEG/JPEG JFIF
Files: result.jpg
Size is 1500, 1061
Coordinate System is `'
Metadata:
  EXIF_ColorSpace=1
  EXIF_PixelYDimension=2480
  ...
  EXIF_YCbCrPositioning=1
  EXIF_YResolution=(300)
Corner Coordinates:
Upper Left  (    0.0,    0.0)
Lower Left  (    0.0, 1061.0)
Upper Right ( 1500.0,    0.0)
Lower Right ( 1500.0, 1061.0)
Center      (  750.0,  530.5)
Band 1 Block=1500x1 Type=Byte, ColorInterp=Gray
  Overviews: 750x531, 375x266, 188x133
  Image Structure Metadata:
    COMPRESSION=JPEG
Run Code Online (Sandbox Code Playgroud)

Mar*_*ell 15

PNG颜色类型不适用于JPEG图像,因此您不能使用相同的技术.尝试将色彩空间强制转换为sRGB,和/或将类型设置为TrueColour,这样就不会得到一个palettised图像:

convert input.jpg -colorspace sRGB -type truecolor result.jpg
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢您的快速回复。作为记录:`convert input.jpg -type truecolor result.jpg` 工作正常。虽然添加 `-colorspace sRGB` 产生了相同的结果,但单独使用它并没有完成工作。 (2认同)