2016-05-19 7 views
-2

есть возможность записать значения double twoD в буферизованное изображение, не делая кастинг типа в Java ?? У меня есть двухдисковая матрица с двойными значениями. Я хочу записать его как изображение, но в Buffered Image могут быть записаны только целые значения. наконец, я должен уметь читать эти двойные значения из этого образа. есть идеи ?? помочь мнекак записать двойные значения в буферизованное изображение

+1

Вопросы, требующие помощи в выполнении домашних заданий, должны содержать резюме работы, которую вы сделали до сих пор, чтобы решить проблему, и описание проблемы, которую вы решаете. См. [Как создать минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve). –

+2

Да, вы можете. Вам необходимо создать пользовательский 'BufferedImage', поддерживаемый' DataBuffer.TYPE_DOUBLE' 'SampleModel' и' DataBuffer'. Не уверен, насколько это полезно, но, по крайней мере, очень выполнимо. Значения 'double' будут напрямую доступны через массив поддержки DataBuffer. – haraldK

+0

благодарю за помощь г-жа #haraldK. я попробую это –

ответ

1

Да, можно, но сначала вы должны создать BuffuredImage с DataBuffer типа DataBufferDouble:

public static BufferedImage Double(int width, int height, int channel) 
    { 
    ColorSpace myColorSpace = new FloatCS(channel == 1 ? ColorSpace.TYPE_GRAY : ColorSpace.TYPE_RGB, channel) ; 

    ColorModel myColorModel = new ComponentColorModel(myColorSpace,null,false,false,ColorModel.OPAQUE,DataBuffer.TYPE_DOUBLE) ; 

    return new BufferedImage(myColorModel, myColorModel.createCompatibleWritableRaster(width, height), false, null) ; 
    } 

Затем вы получаете доступ к пикселям, используя Растр или непосредственно с DataBuffer, но не getRGB.

+0

Спасибо @FiReTiTi. может у, пожалуйста, объясните мне, как использовать это на изображении? –

+0

Код, который я вам только что дал, - это уже изображение. Затем вы можете получить доступ к значениям пикселей с помощью Raster (mymimage.getRaster()) с помощью методов getSample и setSample или с помощью DataBuffer: double [] buffer = ((DataBufferDouble) my image.getRaster(). GetDataBuffer()). получить данные() – FiReTiTi