2012-06-14 49 views
0

我正在使用PictureCallback捕獲圖像。它的工作正常。但在HTC Desire S中,它沒有返回正確的數據。它返回類似以下Android相機PictureCallback數據在HTC Desire S上似乎損壞

enter image description here

這裏損壞的圖像是我用

PictureCallback cameraPictureCallbackJpeg = new PictureCallback() { 
      @Override 
      public void onPictureTaken(byte[] data, Camera camera) { 

          FileOutputStream outStream = null; 
        try { 
       // write to local sandbox file system 
       // outStream = 
       // CameraDemo.this.openFileOutput(String.format("%d.jpg", 
       // System.currentTimeMillis()), 0); 
       // Or write to sdcard 
       outStream = new FileOutputStream(String.format(
         "/sdcard/%d.jpg", System.currentTimeMillis())); 
       outStream.write(data); 
       outStream.close(); 
       Log.e("error", "onPictureTaken - wrote bytes: " + data.length); 
      } catch (FileNotFoundException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } finally { 
      } 
    } 

我必須告訴你,我用其他的方法來將數據轉換成位圖碼。提前致謝。我被困在這裏。任何幫助將不勝感激。

回答

1

這是因爲您未使用支持的圖像尺寸之一。 這裏是你如何獲得這些。

Parameters params = camera.getParameters(); 
List<size> sizes = params.getSupportedPictureSizes(); 

編輯:這是你如何設置圖片大小:

Camera.Parameters params = camera.getParameters(); 
params.setPictureSize(int width, int height); 
try { 
camera.setParameters(params); 
} catch (Exception e) { 
Log.e(TAG, "set parameters failed"); 
} 
+0

感謝您的回答。我會測試它。 –

+0

我完全一樣的問題,做完這個工作後。 –

+0

即使圖像大小被廣告爲「受支持」,但有時並非如此。 –

1

沒有人答應你圖片格式在不同的設備上是一樣的。你必須注意相機設置。

+0

謝謝您的回答。我知道它在不同的設備中不一樣。但我需要緊急解決方案。 –

+1

如果我是你,我會轉儲所有當前的相機設置和可用參數 - 然後看看如何配置它。 –

+0

是的,你是對的。所以,投票是給你的。但諾伯特是具體的。所以我接受了他的回答。 –