createPackedRaster
не подходит для этого. Он создает Raster
с SinglePixelPackedSampleModel
, в котором значения r / g / b / a хранятся в битовых полях внутри int
, поэтому его transferType
может быть только целочисленным типом.
Возможно, вам нужен общий растр с PixelInterleavedSampleModel
, например,
DataBufferDouble dbd = new DataBufferDouble(destWidth * destHeight * 4);
SampleModel sm = new PixelInterleavedSampleModel(DataBuffer.TYPE_DOUBLE, destWidth, destHeight, 4, destWidth * 4, new int[] {2, 1, 0, 3});
WritableRaster wr = WritableRaster.createWritableRaster(sm, dbd, null);
ColorModel cm = new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_LINEAR_RGB), true, true, ColorModel.TRANSLUCENT, DataBuffer.TYPE_FLOAT);
BufferedImage bi = new BufferedImage(cm, wr, true, new Hashtable<Object, Object>());