2015-04-21 60 views
2

我在Windows上使用ImageMagick-6.9.1在使用另一个工具处理PNG文件之前调整它的大小。源文件是RGBA,但图像数据是灰度的(所有像素对于R,G和B都具有相同的值)。看来,ImageMagick的是检测这一点,并转换输出为灰度,即使我指定的格式和色彩空间,像这样:在几个不同的应用防止ImageMagick转换为灰度

convert.exe src.png -format PNG32 -colorspace sRGB -background transparent -resize 830x540 out.png 

我已经验证结果输出格式为8位灰度,包括Photoshop。这是一个问题,因为后面的处理步骤无法处理灰度格式和崩溃。向源添加色调可以使该过程成功完成,但我们需要能够处理未着色的原件。

如何强制ImageMagick输出RGB格式的图像,即使它检测到源是灰度图?

再登录:(从color_type 6 IHDR笔记转换为color_type 4)

>.\ImageMagick-6.9.1-2\identify.exe -verbose rgba_src.png 
Image: rgba_src.png 
    Format: PNG (Portable Network Graphics) 
    Mime type: image/png 
    Class: DirectClass 
    Geometry: 884x747+0+0 
    Resolution: 28.35x28.35 
    Print size: 31.1817x26.3492 
    Units: PixelsPerCentimeter 
    Type: GrayscaleAlpha 
    Base type: GrayscaleAlpha 
    Endianess: Undefined 
    Colorspace: Gray 
    Depth: 8-bit 
    Channel depth: 
    gray: 8-bit 
    alpha: 8-bit 
    Channel statistics: 
    Pixels: 660348 
    Gray: 
     min: 0 (0) 
     max: 255 (1) 
     mean: 234.605 (0.920019) 
     standard deviation: 56.1418 (0.220164) 
     kurtosis: 11.312 
     skewness: -3.45486 
     entropy: 0.271262 
    Alpha: 
     min: 0 (0) 
     max: 247 (0.968627) 
     mean: 23.5875 (0.0924999) 
     standard deviation: 53.3361 (0.209161) 
     kurtosis: 2.71621 
     skewness: -2.02496 
     entropy: 0.206267 
    Alpha: graya(255,0) #FFFFFF00 
    Rendering intent: Perceptual 
    Gamma: 0.454545 
    Chromaticity: 
    red primary: (0.63999,0.33001) 
    green primary: (0.3,0.6) 
    blue primary: (0.15,0.05999) 
    white point: (0.31269,0.32899) 
    Background color: graya(255,1) 
    Border color: graya(223,1) 
    Matte color: graya(189,1) 
    Transparent color: graya(0,0) 
    Interlace: None 
    Intensity: Undefined 
    Compose: Over 
    Page geometry: 884x747+0+0 
    Dispose: Undefined 
    Iterations: 0 
    Compression: Zip 
    Orientation: Undefined 
    Properties: 
    date:create: 2015-04-21T11:15:21-07:00 
    date:modify: 2015-04-21T11:15:28-07:00 
    png:cHRM: chunk was found (see Chromaticity, above) 
    png:IHDR.bit-depth-orig: 8 
    png:IHDR.bit_depth: 8 
    png:IHDR.color-type-orig: 6 
    png:IHDR.color_type: 6 (RGBA) 
    png:IHDR.interlace_method: 0 (Not interlaced) 
    png:IHDR.width,height: 884, 747 
    png:pHYs: x_res=2835, y_res=2835, units=1 
    png:sRGB: intent=0 (Perceptual Intent) 
    signature: b30c82674d8ed7b50afbfd0eb86d37346164378ae92ef305b0ab61325e741f52 
    Artifacts: 
    filename: rgba_src.png 
    verbose: true 
    Tainted: False 
    Filesize: 207KB 
    Number pixels: 660K 
    Pixels per second: 34.76MB 
    User time: 0.016u 
    Elapsed time: 0:01.018 
    Version: ImageMagick 6.9.1-2 Q16 x86 2015-04-14 http://www.imagemagick.org 

>.\ImageMagick-6.9.1-2\convert.exe rgba_src.png -verbose -format PNG32 -colorspace srgb -background transparent -resize 830x540 out.png 
rgba_src.png=>out.png PNG 884x747=>639x540 639x540+0+0 8-bit sRGB 62.8KB 0.406u0:00.107 

>.\ImageMagick-6.9.1-2\identify.exe -verbose out.png 
Image: out.png 
    Format: PNG (Portable Network Graphics) 
    Mime type: image/png 
    Class: DirectClass 
    Geometry: 639x540+0+0 
    Resolution: 28.35x28.35 
    Print size: 22.5397x19.0476 
    Units: PixelsPerCentimeter 
    Type: GrayscaleAlpha 
    Base type: Grayscale 
    Endianess: Undefined 
    Colorspace: Gray 
    Depth: 8-bit 
    Channel depth: 
    gray: 8-bit 
    alpha: 8-bit 
    Channel statistics: 
    Pixels: 345060 
    Gray: 
     min: 0 (0) 
     max: 255 (1) 
     mean: 34.1198 (0.133803) 
     standard deviation: 77.4794 (0.303841) 
     kurtosis: 1.68768 
     skewness: 1.88484 
     entropy: 0.220331 
    Alpha: 
     min: 0 (0) 
     max: 237 (0.929412) 
     mean: 23.5888 (0.092505) 
     standard deviation: 53.2132 (0.208679) 
     kurtosis: 2.60073 
     skewness: -2.00769 
     entropy: 0.208417 
    Alpha: graya(0,0) #00000000 
    Rendering intent: Undefined 
    Gamma: 0.45455 
    Chromaticity: 
    red primary: (0.63999,0.33001) 
    green primary: (0.3,0.6) 
    blue primary: (0.15,0.05999) 
    white point: (0.31269,0.32899) 
    Background color: graya(0,1) 
    Border color: graya(223,1) 
    Matte color: graya(189,1) 
    Transparent color: graya(0,0) 
    Interlace: None 
    Intensity: Undefined 
    Compose: Over 
    Page geometry: 639x540+0+0 
    Dispose: Undefined 
    Iterations: 0 
    Compression: Zip 
    Orientation: Undefined 
    Properties: 
    date:create: 2015-04-21T11:41:45-07:00 
    date:modify: 2015-04-21T12:24:05-07:00 
    png:bKGD: chunk was found (see Background color, above) 
    png:cHRM: chunk was found (see Chromaticity, above) 
    png:gAMA: gamma=0.45455 (See Gamma, above) 
    png:IHDR.bit-depth-orig: 8 
    png:IHDR.bit_depth: 8 
    png:IHDR.color-type-orig: 4 
    png:IHDR.color_type: 4 (GrayAlpha) 
    png:IHDR.interlace_method: 0 (Not interlaced) 
    png:IHDR.width,height: 639, 540 
    png:pHYs: x_res=2835, y_res=2835, units=1 
    png:text: 2 tEXt/zTXt/iTXt chunks were found 
    png:tIME: 2015-04-21T11:15:28Z 
    signature: 3d4b5050f182dac93631d9119d76324d43f9a659ea035523a8e359b7434bdb5b 
    Artifacts: 
    filename: out.png 
    verbose: true 
    Tainted: False 
    Filesize: 62.8KB 
    Number pixels: 345K 
    Pixels per second: 57.51MB 
    User time: 0.000u 
    Elapsed time: 0:01.006 
    Version: ImageMagick 6.9.1-2 Q16 x86 2015-04-14 http://www.imagemagick.org 
+2

灿你提供了一个输入图像来测试一些想法? –

+1

您是否尝试过在命令中添加'-define png:color-type = 6'? –

+0

或者尝试指定输出文件为'PNG32:out.png' –

回答

6

你可以尝试使用-define输出图像类型强制PNG Color-Type 6这样的:

convert input.png ... -define png:color-type=6 output.png 
+0

@superstator:你不应该只是'接受',而是'upvote'马克的答案......它完全符合你的要求。 –