2016-01-19 9 views
7

Я пытаюсь преобразовать изображения с серой шкалой в RGB, используя imagemagick command-line tools.Преобразование изображения JPG из оттенков серого в RGB с использованием imagemagick

Он работает отлично для PNG изображений, используя:

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

(взято из ответа на "How to convert gray scale png image to RGB from comand line using image magick")

Хотя проверки с identify -format %r result.png будет возвращать DirectClass Грея, я могу видеть, что это работает используя 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 option работает только для 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 

ответ

7

типов PNG цветов не применяется к JPEG изображения, поэтому вы не можете использовать ту же технику. Попробуйте добавить цветовое пространство в sRGB и/или установить тип TrueColour, чтобы вы не получили палитрованное изображение:

convert input.jpg -colorspace sRGB -type truecolor result.jpg 
+0

Большое спасибо за быстрый ответ. Для записи: 'convert input.jpg -type truecolor result.jpg' работал отлично. При добавлении '-colorspace sRGB' дал тот же результат, используя его сам по себе, не получило работу. – NotYanka

 Смежные вопросы

  • Нет связанных вопросов^_^