我正在從網絡讀取原始圖像。該圖像已被圖像傳感器讀取,而不是來自文件。如何從原始圖像獲取位圖
這些是我知道關於圖像的東西:
〜高度&寬度
〜總大小(以字節計)
〜8位灰度
〜1字節/象素
我試圖將此圖像轉換爲位圖以在圖像視圖中顯示。
這裏是我的嘗試:
BitmapFactory.Options opt = new BitmapFactory.Options();
opt.outHeight = shortHeight; //360
opt.outWidth = shortWidth;//248
imageBitmap = BitmapFactory.decodeByteArray(imageArray, 0, imageSize, opt);
decodeByteArray返回空,因爲它不能解碼我的形象。
我還試圖直接從輸入流中讀取它,而無需首先將其轉換爲一個字節數組:
imageBitmap = BitmapFactory.decodeStream(imageInputStream, null, opt);
這返回空爲好。
我在這&其他論壇搜索,但無法找到一種方法來實現這一點。
任何想法?
編輯:我應該補充說,我做的第一件事是檢查流是否實際上包含原始圖像。我使用其他應用程序(iPhone/Windows MFC)&,他們能夠讀取它並正確顯示圖像。我只需要找出在Java/Android中執行此操作的方法。
@Seva Alekseyev:謝謝你的答案。我嘗試了你的建議。我得到一個RuntimeException。根據logcat「緩衝區不夠大的像素」。我創建的位圖使用寬度&圖像的高度 – OceanBlue 2011-04-12 15:25:26
@OceanBlue:消息提示位緩衝區小於4 *寬*高字節長,檢查它是否是ARGB_888是每像素4字節格式 – 2011-04-12 15:29:32
@Seva Alekseyev:我知道確保位緩衝區是寬度*高度字節長,圖像是每個像素格式1個字節,所以即使我創建了4倍大小的字節數組,圖像也會存儲在它的前1/4部分。在Android中碰巧知道任何「1字節/像素」格式? – OceanBlue 2011-04-12 21:28:38