我试图使用以下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;
}
答案 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;
}
}