简体   繁体   中英

Imagemagick depth convert

Having an imgage in.png . Now do the next:

$ convert in.png -strip out.tiff     #convert to tiff
$ convert out.tiff -strip out.png    #and back
$ cmp in.png out.png
$#no output - the images has no difference - theyre same

$ identify in.png out.png
in.png PNG 300x300 300x300+0+0 16-bit sRGB 1.65KB 0.000u 0:00.000
out.png[1] PNG 300x300 300x300+0+0 16-bit sRGB 1.65KB 0.000u 0:00.000

now trying this via eps . So:

$ convert in.png -strip out2.eps        #convert to eps
$ convert out2.eps -strip out2.png      #back

and the images are different.

$ identify in.png out.png out2.png
in.png PNG 300x300 300x300+0+0 16-bit sRGB 1.65KB 0.000u 0:00.000
out.png[1] PNG 300x300 300x300+0+0 16-bit sRGB 1.65KB 0.000u 0:00.000
out2.png[2] PNG 300x300 300x300+0+0 8-bit sRGB 4c 321B 0.000u 0:00.009

As you can see, the conversion eps -> png creates 8-bit png.

Curiosity plus - the EPS is 16 bit!

$ identify out2.eps 
out2.eps PS 300x300 300x300+0+0 16-bit sRGB 1.42KB 0.000u 0:00.000

Questions:

  • why the eps->png conversion changes the bit-depth?
  • how to convert from eps to png to get 16-bit png? (as from tiff).

EDIT

Tested @Rachel recommendation:

$ convert out2.eps -depth 16 out3.png
$ identify out3.png 
out3.png PNG 300x300 300x300+0+0 8-bit sRGB 4c 518B 0.000u 0:00.000

8 bit again.

My ImageMagick version:

$ convert --version
Version: ImageMagick 6.8.9-1 Q16 x86_64 2014-06-01 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2014 ImageMagick Studio LLC
Features: DPC Modules
Delegates: bzlib djvu fftw fontconfig freetype gslib gvc jng jp2 jpeg lcms ltdl lzma pangocairo png ps tiff webp wmf x xml zlib

If anyone want test, here is my test image:

测试图像

FINAL

So, @Mark Setchell and @Rachel Gallen's recommendation are good. @Marks command works, so the key is PNG48.

$ convert out2.eps -depth 16 PNG48:out7.png
$ identify out7.png
out7.png PNG 300x300 300x300+0+0 16-bit sRGB 1.86KB 0.000u 0:00.000

Finally 16-bit png. What I will ask it in another question, why the next:

$ mogrify -strip out7.png
$ identify out7.png 
out7.png PNG 300x300 300x300+0+0 8-bit sRGB 4c 321B 0.000u 0:00.000

8 bit again. And the -strip should remove only metadata and should not change the image itself.

我认为你需要沿着这些方向获得16位PNG

convert a.png -depth 16 PNG48:b.png

i think from looking at the docs you can do

   convert -depth 16 image.eps image2.png[16]

the syntax is

   convert [ options … ] file [file …] file

This site says 'Use an optional index enclosed in brackets after a file name to specify a desired subimage of a multi-resolution image format like Photo CD (eg img0001.pcd[4]) or a range for MPEG images (eg video.mpg[50-75]).'

so maybe put the [16] after image2.png

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM