2013-07-23 2 views
2

Я пытаюсь перенести стандартное изображение .jpeg в массив значений цвета, которые хранятся в виде значений int методом getPixels Bitmap. Мой код загружается на изображение и отправляет его данные в одномерный массив int, но некоторые значения не имеют никакого смысла, когда я сравниваю их с моим оригинальным изображением. Я знаю, что изображение читается должным образом, потому что у меня моя программа печатает его на экране. Кто-нибудь знает, почему мой вывод содержит такие странные значения?Bitmap возвращает странные значения цвета

 /* Test */ 
    ImageView image = (ImageView) findViewById(R.id.imageView1); 
    Bitmap bMap = BitmapFactory.decodeResource(getResources(), R.drawable.testsmall); 
    image.setImageBitmap(bMap); 

    int[] pixels = new int[bMap.getHeight() * bMap.getWidth()]; 

    bMap.getPixels(pixels, 0, bMap.getWidth(), 0, 0, bMap.getWidth(), bMap.getHeight()); 

    int[][] colors2D = new int[bMap.getWidth()][bMap.getHeight()]; 
    Log.i("State", "Start"); 
    for (int x = 0; x < bMap.getWidth(); x++) 
    { 
     for (int y = 0; y < bMap.getHeight(); y++) 
     { 
      colors2D[x][y] = pixels[x + y * bMap.getWidth()]; 
      Log.i("Inside", "X: " + x + ", Y: " + y + ", Pixel: " + pixels[x + y * bMap.getWidth()]); 
     } 
     Log.i("Outside", "New Line"); 
    } 
    Log.i("State", "End"); 
    /* End Test */ 

Экстренная Информация:

Следующая содержит вывод LogCat для этой части программы. Странные значения здесь. Класс цвета Android определяет белый как -1 и черный как -16777216.

http://pastebin.com/GxF4j0ef

Это testSmall.jpg. Как видите, это довольно мало. Измерение только 16x16.

https://www.dropbox.com/s/8hbbopoaozuu9ya/testSmall.jpg

+1

FYI- вы обычно указываете цвета в гексагоне. Таким образом, вы можете легко сломать его - первые 2 символа - прозрачность, следующий 2 - красный, затем зеленый, затем синий. Так белый - FFFFFFFF, черный - FF000000, красный - FFFF0000 и т. Д. Гораздо проще сравнивать этот путь. –

+0

Android выражает эти шестнадцатеричные числа в двоичные, представляя цвета. В документации по цветовому классу приведены некоторые примеры. http://developer.android.com/reference/android/graphics/Color.html – BitBoy

+0

Есть ли у Android какие-либо встроенные методы для преобразования двоичных чисел в шестнадцатеричные строковые значения? – BitBoy

ответ

2

Оказывается, что изображение масштабируются в Android младший матрос потому что я поместил его в папку с возможностью переноса. Оказывается, если вы не хотите, чтобы изображение масштабировалось, вы должны поместить его в папку с именем drawable-nodpi. Ссылка ниже помогла мне понять это.

Bitmap getWidth returns wrong value

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

  • Нет связанных вопросов^_^