0

Androidで画像データを読み取るために、Javaの次のコードを使用しようとしています。ImageIO はサポートされていないため、getData().getPixels() を使用するにはどのような方法がありますか?

BufferedImage を Bitmap に変更することで、bi.getData().getPixels() 以外のすべてのコードを動作させることができます。

それを置き換えるために使用できるAndroidライブラリのメソッドはありますか?

Android Bitmap クラス: public void getPixels (int[] ピクセル、int オフセット、int ストライド、int x、int y、int 幅、int 高さ)

このメソッドは int[] をサポートしますが、double[] はサポートしません。画像処理に詳しくないのですが、違いますか?

ありがとうございました。

    private double[] getImageData(String imageFileName) throws FaceRecError {
    BufferedImage bi = null;
    double[] inputFace = null;
    try{
        bi = ImageIO.read(new File(imageFileName));
    }catch(IOException ioe){
        throw new FaceRecError(ioe.getMessage());
    }
    if (bi != null){
    int imageWidth = bi.getWidth();
    int imageHeight = bi.getHeight();
    inputFace = new double[imageWidth * imageHeight];
    bi.getData().getPixels(0, 0, imageWidth, imageHeight,inputFace);
    }
    return inputFace;
}   
4

1 に答える 1

1

このコードは、Android のビットマップ内のすべてのピクセルの色を取得するために使用されます。色の配列を返します。

    Bitmap bitmap=BitmapFactory.decodeFile("file path");
    int height=bitmap.getHeight();
    int width=bitmap.getWidth();
    int[] pixel=new int[height*width];
    bitmap.getPixels(pixel, 0, width, 0, width, width, height);

したがって、色はピクセル配列に保存されます。getPixels()必要なピクセルの色をカスタマイズするための多くのパラメーターがあります

整数配列を double にキャストするために更新

public  double[] getDoubleNumbers(int[] numbers) 
//changed double to double[]
{double[] newNumbers = new double[numbers.length]; //changed 99 to numbers.length
for (int index = 0; index < numbers.length; index++)
newNumbers[index] = (double)numbers[index];

return newNumbers;
}
}
于 2012-04-10T04:33:51.723 に答える