2012-06-14 114 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

是的,你是对的。所以,投票是给你的。但诺伯特是具体的。所以我接受了他的回答。 –