我有一個運動JPEG流,放在Android的畫布上。我的問題是在畫布的右下方有一個灰色的像素化的小欄。它有點消失並重新出現。我在其他使用相同流的平臺上沒有這個問題,所以我猜測它是一個Android問題。這裏是我的代碼:Android位圖問題
Canvas canvas = null;
try
{
Bitmap bmp = BitmapFactory.decodeByteArray(notifi.imgData, 0, notifi.imgData.length);
if (bmp == null)
System.out.println("Skipping invalid MJpeg frame");
else
{
canvas = holder.lockCanvas(null);
if (canvas == null)
{
System.out.println("Cannot lock canvas, skipping MJpeg frame");
return;
}
canvas.drawColor(Color.BLACK);
Rect dst = null;
int viewWidth = mPreview.getWidth();
int viewHeight = mPreview.getHeight();
float ratio = bmp.getWidth()/(float)bmp.getHeight();
int desiredHeight = (int)(viewWidth/ratio);
if (desiredHeight > viewHeight)
{ // Letterbox
int maxWidth = (int)(viewHeight * ratio);
int pad = (viewWidth - maxWidth)/2;
dst = new Rect(pad, 0, maxWidth + pad, viewHeight);
}
else
{
int pad = (viewHeight - desiredHeight)/2;
dst = new Rect(0, pad, viewWidth, desiredHeight + pad);
}
canvas.drawBitmap(bmp, null, dst, null);
}
} finally {
if (canvas != null)
holder.unlockCanvasAndPost(canvas);
}
}
});
填充只是給了我適當的高度。這個小小的灰色「條」甚至沒有覆蓋jpeg的整個寬度。就在它的右下角,它的尾跡像素化了。是否有任何BitmapFactory選項可能有幫助? – spentak