問題如下,希望一起研究Android的camera 一起來討論吧^^ 下面是預覽模式時,會做的動作
camera.setPreviewCallback(new PreviewCallback() {
public void onPreviewFrame(byte[] _data, Camera _camera) {
// TODO Do something with the preview image.
在這邊我將byte[] _data 轉成bitmap後,對bitmap做改變完,我要怎麼更新到預覽的顯示??
Bitmap bm = null;
bm = BitmapFactory.decodeByteArray(_data, 0, _data.length);
Log.i("bitmap1",bm.getHeight()+"_height");//執行到這行時…會寫未正常中止…的錯誤,用到bm的相關資源…就給我出錯…透過bm在copy一份 bitmap也是…
因為他是YCBCR的格式,可是就算我加一個方法上去把data改成RGB,跑不到十秒就會出現OUT OF MEMORY問題…
Bitmap bitmap1 = bm.copy(android.graphics.Bitmap.Config.RGB_565, true);
int r=0,g=0,b=0,color=0;
//將bitmap1轉灰階
for(int y=0;y<bitmap1.getHeight();y++){
for(int x=0;x<bitmap1.getWidth();x++){
color=0;
r=(bitmap1.getPixel(x, y)&0xFF0000)>>16;
g=(bitmap1.getPixel(x, y)&0xFF00)>>8;
b=(bitmap1.getPixel(x, y)&0xFF);
//color= (r+g+b)/3;
color= (int)(r*0.299+g*0.587+b*0.114);
color=((color<<16)^0xFF0000)+((color<<8)^0xFF00)+((color)^0xFF);
color=(color*-1)-1;
bitmap1.setPixel(x,y,color);
}
}
也就是我目前的預覽的資源目前 都被我 改成bitmap了,接下來如何更新到SurfaceView
有大大會嗎^^
}
});
2 則回應
請問您的問題有解決了嗎?
我目前有一樣的需求要處理, 更慘的是…
BitmapFactory.decodeByteArray(_data, 0, _data.length);
這一行回傳給我null 看起來是_data 沒辦法被decode
請問您的問題有解決了嗎?
我目前有一樣的需求要處理, 更慘的是…
BitmapFactory.decodeByteArray(_data, 0, _data.length);
這一行回傳給我null 看起來是_data 沒辦法被decode
請問您問題解決了嗎
小弟剛好也遇到這個問題
可以分享一下你的解決方法嗎
謝謝你