【问题标题】:Best way to scale size of camera picture before saving to SD在保存到 SD 之前缩放相机图片大小的最佳方法
【发布时间】:2010-10-18 18:08:46
【问题描述】:

下面的代码作为调用TakePicture后的jpeg图片回调执行。如果我将数据保存到磁盘,它是 1280x960 jpeg。我试图改变图片大小,但这是不可能的,因为不支持更小的尺寸。 JPEG 是唯一可用的图片格式。

 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,因此看起来操作失败。

  • 我不清楚 Bitmap 是否可以处理 jpeg 数据。我认为不会,但我似乎有一些代码示例似乎表明它是。
  • 在解码和缩放之前数据是否需要为位图格式?
  • 如果是这样,该怎么做?

谢谢!

【问题讨论】:

    标签: android bitmap jpeg


    【解决方案1】:

    在你的surfaceCreated上,你用代码设置camara的图片尺寸,如下代码所示:

    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(); } }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-10
      • 1970-01-01
      • 2013-10-21
      相关资源
      最近更新 更多