web-dev-qa-db-ja.com

imagemagickを使用してJPG画像をグレースケールからRGBに変換します

imagemagickコマンドラインツール を使用してグレースケール画像をRGBに変換しようとしています。

以下を使用して、PNG画像に対して正常に機能しています。

convert image.png -define png:color-type=2 result.png

"image magickを使用してグレースケールpng画像をコマンドラインからRGBに変換する方法" )への回答から取得

identify -format %r result.pngでチェックするとDirectClass Grayが返されますが、現在3のようにgdalinfoを使用して機能していることがわかります。 リストされているバンド/チャンネル:

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

ただし、 -defineオプション はPNG画像に対してのみ機能しているようです。

私の質問:JPG画像で同じ効果を得るにはどうすればよいですか?

上記のコマンドをJPGで試しても、機能しません。

convert image.jpg -define jpg:color-type=2 result.jpg

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
14
NotYanka

PNGカラータイプはJPEG画像には適用されないため、同じ手法を使用することはできません。色空間をsRGBに強制するか、タイプをTrueColourに設定して、パレット化された画像が得られないようにしてください。

convert input.jpg -colorspace sRGB -type truecolor result.jpg
16
Mark Setchell