拍摄照片并保存到SD而不会降低质量

时间:2013-04-07 01:06:54

标签: java android camera compression photo

我有那个拍照并将其存储到SD卡的应用程序,但是我拍的每张照片都非常压缩且质量非常低。我用完全的质量压缩它所以我不确定它为什么这样做。有什么建议?这是代码:

protected void takePhoto()
{
    Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(intent, 0); 
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
    super.onActivityResult(requestCode, resultCode, data);
    currPhoto = (ImageView) findViewById(R.id.imageView1);

    if (requestCode== 0 && resultCode == Activity.RESULT_OK){
        Bitmap x = (Bitmap) data.getExtras().get("data");
        currPhoto.setImageBitmap(x);
        ContentValues values = new ContentValues();
        values.put(Images.Media.MIME_TYPE, "image/jpeg");
        Uri uri = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, values);
        OutputStream outstream;
        try {
            outstream = getContentResolver().openOutputStream(uri);

        x.compress(Bitmap.CompressFormat.JPEG, 90, outstream);
        outstream.close();
        } catch (FileNotFoundException e) {
            //
        }catch (IOException e){
            //
        }
    }
}

编辑:实际上它似乎只将缩略图保存到SD。

example

1 个答案:

答案 0 :(得分:1)

来自documentation

  

public static final String ACTION_IMAGE_CAPTURE

     

API level 3标准意图行动中添加了可以发送的动作   相机应用程序捕获图像并将其返回。

     

来电者可以传递额外的EXTRA_OUTPUT来控制此图片的位置   将写。如果EXTRA_OUTPUT不存在,则为小   size图像作为额外字段中的Bitmap对象返回。这是   适用于只需要小图像的应用程序。 如果   EXTRA_OUTPUT存在,然后将写入完整大小的图像   Uri值为EXTRA_OUTPUT