2012-04-10 4 views
0

Я пытаюсь использовать следующий код java для чтения данных изображения на Android. Поскольку ImageIO не поддерживается, каким образом я могу использовать getData(). GetPixels()?Существуют ли подобные андроидные методы java getData(). GetPixels()?

Изменяя BufferedImage в Bitmap, я могу получить все остальные коды, работающие помимо bi.getData(). GetPixels()?

Любой метод в библиотеке android я могу использовать для его замены?

В андроид класса Bitmap: общественный недействительный getPixels (INT [] пикселы, Int смещения, Int шаг, Int х, Int у, ширина INT, INT высота)

Этот метод поддерживает INT [], но не двойной []. Я не знаком с обработкой изображений, они будут разными?

спасибо.

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

getPixels() растровых возвратные пиксели цвета – Sameer

+2

метода вы упомянули выше, доступны в Andriod. он возвращает только int []. if u want it in double [] type cast int [] to double [] – user1203673

+0

yes Можно ли придумать в double – Sameer

ответ

1

Этот код используется для получения цвета всех пикселей в Bitmap в android.This возвращения массива цвета

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() имеют много параметров для настройки, какой пиксель цвета вы хотите

Обновлен Для литья Integer массива двойного

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; 
} 
} 
+0

будет простым литьем из целого числа, чтобы удвоить создание другого цвета, который они представляют? – James

+0

Я думаю, что цвет не должен быть изменен, так как 0 и 0.0000 представляют один и тот же цвет. Но я предлагаю вам не изменять его, если это возможно. Должен ли я опубликовать, как отличная отличная от int, чтобы удвоить – Sameer

+0

Я подумываю о литье каждого целого числа в массиве, чтобы удвоить. Какая хорошая манера? Спасибо – James

Смежные вопросы