IM netpbm output is limited to 8 and 16 bit depth. setting the Maxval Netpbm setting is an option i would like to see added to the netpbm coder.
However you can post process using the netpbm command "pnmdepth" to change the final depth.
An example of this is in IM examples, File Formats, NetPBM
http://www.imagemagick.org/Usage/formats/#netpbm
Code: Select all
convert rose:[10x10+0+0] -colorspace gray -transpose -depth 16 PGM:- |\
pamdepth 99 | pnmnoraw
P2
10 10
99
18 18 17 17 18 18 19 21 22 21
19 18 17 17 18 18 20 21 22 21
20 19 18 18 18 19 20 22 24 23
20 20 18 18 18 19 21 23 24 25
20 20 18 17 17 19 21 24 25 26
20 19 18 17 17 19 20 23 26 26
19 19 18 17 16 18 19 23 25 26
20 20 18 17 15 17 18 22 25 27
19 20 18 17 16 17 19 22 25 26
19 20 18 17 17 16 18 21 24 25
In that example a array of color values from 0 to 99 was created.
NOTE: I recommend you specifically set
-depth 16 for the initial PGM image output so as to give the most accurate result when pnmdepth reduces the color value range.
You already figured out the other technique of using
-evaluate. However the
+level may work better as you can actually exactly specify the final 'maxvalue' for the pixels, even if the 'maxvalue' in the PGM file is not correct..
Code: Select all
convert rose:[10x10+0+0] +depth -colorspace gray -transpose +level 0,99 PGM:- | pnmnoraw
P2
10 10
65535
18 18 17 17 18 18 19 21 22 21
19 18 17 17 18 18 20 21 22 21
20 19 18 18 18 19 20 22 24 23
20 20 18 18 18 19 21 23 24 25
20 20 18 17 17 19 21 24 25 26
20 19 18 17 17 19 20 23 26 26
19 19 18 17 16 18 19 23 25 26
20 20 18 17 15 17 18 22 25 27
19 20 18 17 16 17 19 22 25 26
19 20 18 17 17 16 18 21 24 25
Note that "pnmnoraw" is still used rather that using a
-compress none as it restores the 'image row' to 'text file line' correspondance. IM NetPBM coder does not do this preservation.
Here
+depth resets the input images depth to match IM internal 'quality'. This should be either Q8 or Q16, as it will fail for Q32 and Q64 due to NetPBM dividing the images internal Quality to match the external depth. The internal Depth/Quality will be what will appear on the thrid line of the output, so will be either 255 or 65535.
And finally here I use 'sed' to reset that value in 'noraw' PGM text file format.
Code: Select all
convert rose:[10x10+0+0] +depth -colorspace gray -transpose +level 0,99 PGM:- | pnmnoraw | sed '3s/^.*$/99/'
P2
10 10
99
18 18 17 17 18 18 19 21 22 21
19 18 17 17 18 18 20 21 22 21
20 19 18 18 18 19 20 22 24 23
20 20 18 18 18 19 21 23 24 25
20 20 18 17 17 19 21 24 25 26
20 19 18 17 17 19 20 23 26 26
19 19 18 17 16 18 19 23 25 26
20 20 18 17 15 17 18 22 25 27
19 20 18 17 16 17 19 22 25 26
19 20 18 17 17 16 18 21 24 25
ASIDE: I was the person to make the vital 1995 patch release of NetPBM, during a time when little work was being done on the software. Because of this I have a good understanding of the PbmPlus software and image file format.