2010-11-20 66 views
2

總之,我無法訪問位圖圖像的所有像素。如何訪問Android上的位圖圖像的像素?

我已經使用了一個意圖來啓動原生的相機應用程序,並返回一個位圖圖像到我的應用程序活動。數據絕對是一個位圖對象,我可以顯示,獲取高度/寬度等,並使用getPixel()訪問一些像素。但是,當我使用getHeight()和getWidth()的值時,我得到一個數組越界的錯誤。通過跟蹤和錯誤我發現我只能訪問圖像像素數量減少,例如一個圖像返回的高度和寬度值爲420,380,我也可以訪問200,100。然後我做一些圖像處理,並在原始圖像上使用setPixel()。當我顯示圖像時,它顯示的是200,100,處理像素,其餘部分正常,因此像素顯然存在,可以通過android訪問,但不能通過我訪問。我必須和其他也有這個問題的人交談。

有沒有人知道更多關於此事的原因?或工作?

非常感謝提前。

似乎沒有辦法解決這個問題,有沒有人認爲它可能會更好/可能直接在內存中訪問圖像可能使用NDK?

回答

1

從Android論壇獲得了Albert Pucciani的回答。我現在創建一個int buffer並將像素複製到它,然後使用get()put()來提取像素。使用get()put()代替Bitmap類中的get/setPixel()要快得多。現在需要測試這是否將所有像素都返回到所有圖像的緩衝區。

經過更多測試後,我發現這只是一個內存問題,因爲爲每個進程分配的數量包含所有位圖。

1

您將無法訪問任何圖像中的(getWidth(),getHeight())像素,因爲像其他所有圖像都是0索引的。像素的有效範圍是(0到getWidth()-1,0到getHeight()-1),因此最下面的像素由b.getPixel(b.getWidth() - 1,b.getHeight() - 1)。

+0

感謝您的答覆,是的,我意識到0索引,問題是我不能訪問好一半以上的像素。基本上我有一些嵌套的for循環(int y = 0; y 2010-11-20 16:06:19