Imagemagick mengonversi tif ke rgba16 png

Jadi inilah gambar sumber tif saya:

$ identify -verbose source.tif
Image: 
  Format: TIFF (Tagged Image File Format)
  Class: DirectClass
  Geometry: 512x512+0+0
  Resolution: 72x72
  Print size: 7.11111x7.11111
  Units: PixelsPerInch
  Type: Palette
  Base type: TrueColor
  Endianess: MSB
  Colorspace: RGB
  Depth: 8-bit
  Channel depth:
    red: 8-bit
    green: 8-bit
    blue: 1-bit

Dan saya sudah mencoba: mengonversi source.tif output.png

Dan inilah hasilnya:

$ identify -verbose output.png 
  Format: PNG (Portable Network Graphics)
  Class: DirectClass
  Geometry: 512x512+0+0
  Resolution: 28.34x28.34
  Print size: 18.0663x18.0663
  Units: PixelsPerCentimeter
  Type: Palette
  Endianess: Undefined
  Colorspace: RGB
  Depth: 8-bit
  Channel depth:
    red: 8-bit
    green: 8-bit
    blue: 1-bit

Tapi saya tidak tahu cara membuat PNG menjadi RGBA16. Yang saya pahami berarti memerlukan kedalaman 16 bit, dan saluran alfa.


person Greg    schedule 27.02.2015    source sumber
comment
Apakah itu keseluruhan baris perintah Anda? Tampaknya tidak ada alasan untuk memperbarui saluran tujuan, karena sumbernya sangat cocok.   -  person Jongware    schedule 27.02.2015
comment
Saya tidak yakin saya mengerti.   -  person Greg    schedule 27.02.2015
comment
Format masukan Anda 8-8-1 (yang tidak biasa), tampaknya dikonversi ke format yang persis sama di PNG. Perintah convert melakukan apa yang Anda perintahkan, tidak lebih. Mungkin Anda perlu memberi tahu bahwa Anda menginginkan keluaran 16-bit (yang, jika saya pahami dengan benar, memerlukan downsampling ke saluran 4-4-4-4).   -  person Jongware    schedule 27.02.2015


Jawaban (1)


Secara umum, ImageMagick akan menggunakan format keluaran paling ekonomis yang sesuai dengan spesifikasi Anda. Jadi, jika gambar masukan Anda tidak memiliki saluran alfa (yaitu transparansi), gambar keluaran Anda tidak akan memiliki transparansi. Jika palet 256 warna cukup untuk warna pada gambar Anda, maka akan menghasilkan gambar keluaran yang diberi palet. Jika kedalaman keluaran 8-bit cukup untuk gambar Anda, maka tidak akan mengganggu pembuatan keluaran 16-bit. Dan seterusnya...

Jika Anda ingin memaksa ImageMagick melakukan sesuatu yang berbeda, Anda memiliki sejumlah opsi.

Jika Anda ingin memaksa warna asli, atau file keluaran yang diberi palet (terindeks), Anda dapat melakukan ini:

convert input.png -type palette   output.png  # Force palettised (indexed) output
convert input.png -type truecolor output.png  # Force true colour output

Jika Anda ingin memaksa 8-bit atau 16-bit, Anda dapat melakukan ini:

convert input.png -depth 8   output.png  # Force 8-bit output
convert input.png -depth 16  output.png  # Force 16-bit (per channel) output  

Jika Anda ingin memaksa saluran alfa/transparansi, Anda dapat melakukan:

convert input.tif -type TrueColorAlpha output.png  # Force a true color output with transparency

Dan Anda juga bisa menggabungkannya. Jika Anda ingin melihat opsi type, gunakan perintah ini:

identify -list type

Bilevel
ColorSeparation
ColorSeparationAlpha
ColorSeparationMatte
Grayscale
GrayscaleAlpha
GrayscaleMatte
Optimize
Palette
PaletteBilevelAlpha
PaletteBilevelMatte
PaletteAlpha
PaletteMatte
TrueColorAlpha
TrueColorMatte
TrueColor

Selain itu, khusus untuk file PNG, Anda juga dapat memaksa keluaran dengan menentukan jenis PNG dalam huruf kapital, diikuti dengan titik dua di depan nama file keluaran, sebagai berikut:

convert input.tif PNG64:output.png     # Force 64-bit RGBA (3 channels @ 16-bits each, plus alpha)
convert input.tif PNG32:output.png     # Force 32-bit RGBA (3 channels @ 8-bits each, plus alpha)
convert input.tif PNG48:output.png     # Force 48-bit output (3 channels @ 16-bits each, no alpha)
convert input.tif PNG24:output.png     # Force 24-bit output (3 channels @ 8-bits each, no alpha)

Jadi jawaban singkatnya adalah

convert input.tif PNG64:output.png

or

convert input.tif -depth 16 -type TrueColorAlpha output.png

Namun berhati-hatilah, ImageMagick akan menimpa versi kedua jika tidak ada saluran alfa pada gambar masukan Anda, sedangkan itu tidak akan terjadi jika Anda menggunakan PNG64:.

person Mark Setchell    schedule 28.02.2015
comment
Terima kasih atas penjelasannya! Jadi mengapa PNG64 jika saya ingin rgba16? - person Greg; 02.03.2015
comment
Karena 4 saluran @16-bit masing-masing = 64 - person Mark Setchell; 02.03.2015
comment
Untuk beberapa alasan saya mendapatkan kesalahan ini dengan perintah: convert: tidak dapat membuka gambar `PNG64:output.png': @ error/blob.c/OpenBlob/2517. - person Greg; 04.03.2015
comment
Apa yang terjadi jika Anda menjalankan convert -size 100x100 xc:black a.png - person Mark Setchell; 04.03.2015
comment
Sepertinya saya juga kehilangan TrueColorAlpha saat menjalankan identifikasi -tipe daftar - person Greg; 04.03.2015
comment
Oke, coba convert -size 100x100 xc:black PNG64:a.png - person Mark Setchell; 04.03.2015
comment
Saya pikir Anda memiliki versi lama, coba identify -version - person Mark Setchell; 04.03.2015
comment
Pada perintah terakhir Anda sebelumnya, saya mendapat: convert: tidak ada delegasi penyandian untuk format gambar ini `PNG64:~/a.png' @ error/constitute.c/WriteImage/1189. - person Greg; 04.03.2015
comment
Untuk versi saya mendapat Versi: ImageMagick 6.6.4-1 2010-12-17 - person Greg; 04.03.2015
comment
Itu kuno :-( Anda pasti perlu memperbarui. - person Mark Setchell; 04.03.2015