0

我正在尝试使用以下java代码来读取android上的图像数据。由于不支持 ImageIO,我可以通过哪些方式使用 getData().getPixels()?

通过将 BufferedImage 更改为 Bitmap,我可以让除 bi.getData().getPixels() 之外的所有其他代码正常工作吗?

我可以用android库中的任何方法来替换它吗?

在 android Bitmap 类中: public void getPixels (int[] 像素,int offset,int stride,int x,int y,int width,int height)

此方法支持 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 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()有很多参数来自定义你想要的像素颜色

更新了将整数数组转换为双精度

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 回答