2014-12-24 1 views
2

У меня есть PNG с 4 полосами, но я хочу только 1 полосу с цветной таблицей. Я попытался сохранить его в виде 256-цветного растрового изображения в MS Paint, и он сработал.Конвертировать PNG с 4 полосами в любой формат с 1 полосой и цветной таблицей

Но мне нужно сделать это автоматически. Я попробовал 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 

Я хочу сфотографироваться с одной группой и цвет таблицу, поэтому я открыл E8.png с помощью MS Paint и сохранил ее как 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 

Edit: Здесь (uploaded.net - Dropbox) оригинальный PNG и здесь (uploaded.net - dropbox) ВМР я получил с помощью MS Paint.

+0

Трудно сказать без вашего изображения, но попробуйте ImageMagick 'convert input.png -separate -type palette out% d.bmp' –

+0

thx I добавлено 2 изображения в конце вопроса. – Selphiron

+1

Что это за ужасная ссылка на вредоносный вред? –

ответ

3

Может быть, эта команда:

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

получает вас ближе к тому, что вы хотите? Это немного большая, хотя, эта растровая ... (129 МБ). Таким образом, этого должно быть меньше:

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

Последний из них всего 16 МБ.

Вы заголовок говорит «любой формат», поэтому 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 
+0

спасибо, ты спас день! Первый не сработал, у него снова было 3 группы, но 2-й и 3-й были прекрасны, и я использую третий :) – Selphiron

0

Не уверен, что вы хотите точно ...

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

Вы говорите, что у вас 4-полосный PNG, но изображение, которое вы разделили, представляет собой 3-полосный BMP? –