2016-05-19 17 views
-2

Javaで型キャストを行わずにバッファされたイメージにdouble twoD値を書き込む可能性がありますか?私は2つの値を持つ2次元行列を持っています。私はそれをイメージとして書きたいが、Buffered Imageには整数値しか書けない。最終的には、その二重の値をそのイメージから読み取ることができなければなりません。何か案は ??バッファリングされたイメージにdouble値を書き込む方法

+1

宿題の助けを求める質問には、問題を解決するためにこれまでに行った作業の概要と、解決している問題の説明が含まれている必要があります。 [最小限で完全で検証可能なサンプルの作成方法](http://stackoverflow.com/help/mcve)を参照してください。 –

+2

はいできます。 'DataBuffer.TYPE_DOUBLE''SampleModel'と' DataBuffer'に裏打ちされたカスタムの 'BufferedImage'を作成する必要があります。それがどれほど有用かはっきりしていませんが、少なくとも非常に実行可能です。 'double'値は' DataBuffer'のバッキング配列を通して直接アクセスできます。 – haraldK

+0

助けていただきありがとうございますmr #haraldK。私はこれを試してみます –

答えて

1

はいすることができます私を助けるが、最初あなたはタイプDataBufferDoubleのDataBufferを持つBuffuredImageを作成する必要があります。

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

私があなたに与えたコードはすでにイメージです。次に、getSampleメソッドとsetSampleメソッドを使用してRaster(mymimage.getRaster())を使用するか、DataBuffer:double [] buffer =((DataBufferDouble)my image.getRaster()。getDataBuffer())を使用してピクセル値にアクセスできます。 getData() – FiReTiTi

関連する問題