2010-10-18 49 views
1

以下代碼在TakePicture被調用後執行爲jpeg圖片回調。如果我將數據保存到磁盤,則它是1280x960 jpeg。我試圖改變圖片尺寸,但這是不可能的,因爲不支持更小的尺寸。 JPEG是唯一可用的圖片格式。保存爲SD之前縮放攝像頭圖片尺寸的最佳方法

PictureCallback jpegCallback = new PictureCallback() { 
    public void onPictureTaken(byte[] data, Camera camera) { 
    FileOutputStream out = null; 
    Bitmap bm = BitmapFactory.decodeByteArray(data, 0, data.length); 
    Bitmap sbm = Bitmap.createScaledBitmap(bm, 640, 480, false); 

data.Length與預期的一樣是500k。在執行BitmapFactory.decodeByteArray()之後,bm的高度和寬度都是-1,所以看起來操作失敗。

  • 目前還不清楚,如果位圖可以處理jpeg數據。我想不會,但我似乎有一些代碼示例似乎表明它是。
  • 在解碼和縮放之前數據是否需要位圖格式?
  • 如果是這樣,該怎麼做?

謝謝!

回答

5

在您surfaceCreated,你代碼中設置卡馬拉的圖片大小,如下面的代碼:


public void surfaceCreated(SurfaceHolder holder) { 
     camera = Camera.open(); 
     try { 
      camera.setPreviewDisplay(holder); 
      Camera.Parameters p = camera.getParameters(); 
      p.set("jpeg-quality", 70); 
      p.setPictureFormat(PixelFormat.JPEG); 
      p.setPictureSize(640, 480); 
      camera.setParameters(p); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    }