将具有4个波段的PNG转换为具有1个波段和颜色表的任何格式

时间:2014-12-24 16:35:25

标签: imagemagick png bmp gdal

我有一个带4个波段的PNG,但我只想要一个带色表的乐队。我尝试将其保存为MS Paint中的256色位图并且它有效。

但我需要自动完成。我尝试过ImageMagick:convert E8.png E8256.bmp但它没有用。

所以这是原始图片:

ImageMagick identify

E8.png PNG 8250x4090 8250x4090+0+0 8-bit sRGB 231KB 0.000u 0:00.000

gdalinfo:

Driver: PNG/Portable Network Graphics
Files: E8.png
Size is 8250, 4090
Coordinate System is `'
Image Structure Metadata:
  INTERLEAVE=PIXEL
Corner Coordinates:
Upper Left  (    0.0,    0.0)
Lower Left  (    0.0, 4090.0)
Upper Right ( 8250.0,    0.0)
Lower Right ( 8250.0, 4090.0)
Center      ( 4125.0, 2045.0)
Band 1 Block=8250x1 Type=Byte, ColorInterp=Red
  Mask Flags: PER_DATASET ALPHA
Band 2 Block=8250x1 Type=Byte, ColorInterp=Green
  Mask Flags: PER_DATASET ALPHA
Band 3 Block=8250x1 Type=Byte, ColorInterp=Blue
  Mask Flags: PER_DATASET ALPHA
Band 4 Block=8250x1 Type=Byte, ColorInterp=Alpha

我想要一张带有一个乐队和一张颜色表的照片,所以我用MS Paint打开了E8.png并将其保存为256色位图。结果:

ImageMagick identify

E8256.bmp BMP3 8250x4090 8250x4090+0+0 8-bit sRGB 256c 33.75MB 0.265u 0:00.138

gdalinfo:

Driver: BMP/MS Windows Device Independent Bitmap
Files: E8256.bmp
Size is 8250, 4090
Coordinate System is `'
Origin = (-1890.000000000000000,1890.000000000000000)
Pixel Size = (3780.000000000000000,-3780.000000000000000)
Corner Coordinates:
Upper Left  (   -1890.000,    1890.000)
Lower Left  (   -1890.000,-15458310.000)
Upper Right (31183110.000,    1890.000)
Lower Right (31183110.000,-15458310.000)
Center      (15590610.000,-7728210.000)
Band 1 Block=8250x1 Type=Byte, ColorInterp=Palette
  Color Table (RGB with 256 entries)
    0: 0,0,0,255
    1: 128,0,0,255
    ...
    255: 255,255,255,255

但是当我尝试convert E8.png E8imagemagick.bmp时,我得到了:

ImageMagick identify

 E8imagemagick.bmp BMP 8250x4090 8250x4090+0+0 8-bit sRGB 135MB 0.406u 0:00.409

gdalinfo:

Driver: BMP/MS Windows Device Independent Bitmap
Files: E8imagemagick.bmp
Size is 8250, 4090
Coordinate System is `'
Corner Coordinates:
Upper Left  (    0.0,    0.0)
Lower Left  (    0.0, 4090.0)
Upper Right ( 8250.0,    0.0)
Lower Right ( 8250.0, 4090.0)
Center      ( 4125.0, 2045.0)
Band 1 Block=8250x1 Type=Byte, ColorInterp=Red
Band 2 Block=8250x1 Type=Byte, ColorInterp=Green
Band 3 Block=8250x1 Type=Byte, ColorInterp=Blue

修改:此处(uploaded.net - Dropbox)是原始PNG,此处(uploaded.net - dropbox)BMP I使用MS Paint获得。

2 个答案:

答案 0 :(得分:3)

也许这个命令:

 convert E8.png -colors 256 E8-256colors.bmp

让你更接近你想要的?不过,这个位图有点大......(129 MByte)。所以这个应该更小:

 convert E8.png -type palette -colors 256 E8-palette-256colors.bmp

最后一个只有16 MByte。

你的标题是'任何格式',所以PNG也可以按顺序排列?它创造了更小的输出:

 convert E8.png -type palette -colors 256 E8-palette-256colors.png

(现在的大小只有122 kByte。)

原始图片仅包含6种颜色,新输出也是如此:

 identify -format "%f: %k\\n" E8.png E8-palette-256colors.png
   E8.png: 6
   E8-palette-256colors.png: 6

 identify E8.png E8-palette-256colors.png
   E8.png PNG 8250x4090 8250x4090+0+0 8-bit sRGB 231KB 0.000u 0:00.000
   E8-palette-256colors.png[1] PNG 8250x4090 8250x4090+0+0 8-bit sRGB 6c 125KB 0.000u 0:00.000

答案 1 :(得分:0)

不确定你想要什么...

convert E8256.bmp -separate -type palette PNG8:out%d.png