java getData()。getPixels()有类似的android方法吗?

时间:2012-04-10 03:50:17

标签: java android image bitmap getpixel

我试图使用以下java代码来读取android上的图像数据。由于不支持ImageIO,有什么方法可以使用getData()。getPixels()?

通过将BufferedImage更改为Bitmap,我可以获得除bi.getData()之外的所有其他代码.getPixels()?

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

在android Bitmap类中: public void getPixels(int [] pixels,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;
}   

1 个答案:

答案 0 :(得分: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;
}
}