Write to 16 bit BufferedImage TYPE_USHORT_GRAY

前端 未结 3 1431
庸人自扰
庸人自扰 2021-01-06 18:29

I\'m trying to write 16 bit grayscale imagedata to a png using BufferedImage.TYPE_USHORT_GRAY. Normally I write to an image like so:

BufferedImage image = ne         


        
相关标签:
3条回答
  • 2021-01-06 19:05

    As pst already commented below my question:

    Try using the Raster directly?

    Accessing the Raster directly solved the problem.

    0 讨论(0)
  • 2021-01-06 19:14

    You probably need to widen the signed 16bit shorts to ints and remove the sign:

    int ushort = (int)(shortData[x][y]) & 0xFFFF;
    
    0 讨论(0)
  • 2021-01-06 19:17

    From BufferedImage you can read

    public static final int TYPE_USHORT_GRAY

    Represents an unsigned short grayscale image, non-indexed). This image has a ComponentColorModel with a CS_GRAY ColorSpace.

    So try instantiating your own ColorSpace with the CS_GRAY type (ColorSpace.getInstance(ColorSpace.CS_GRAY) should do it I suppose). This object has a method called fromRGB which you should be able to use...

    0 讨论(0)
提交回复
热议问题