拍照并保存到 SD 而不损失质量
Posted
技术标签:
【中文标题】拍照并保存到 SD 而不损失质量【英文标题】:Taking a photo and saving to SD without loss of quality 【发布时间】:2013-04-07 01:06:53 【问题描述】:我有那个应用程序可以拍照并将其存储到 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。
【问题讨论】:
【参考方案1】:来自documentation:
公共静态最终字符串
ACTION_IMAGE_CAPTURE
在
API level 3
中添加了可以发送到的标准 Intent 操作 相机应用程序捕获图像并将其返回。调用者可能会传递一个额外的
EXTRA_OUTPUT
来控制此图像的位置 将被写入。如果EXTRA_OUTPUT
不存在,那么一个小的 大小的图像作为额外字段中的位图对象返回。这是 对于只需要小图像的应用程序很有用。 如果EXTRA_OUTPUT
存在,然后将全尺寸图像写入EXTRA_OUTPUT
的 Uri 值。
【讨论】:
太棒了,谢谢,这帮助我理解了它。对于其他有同样问题的人this link 是我需要的代码。以上是关于拍照并保存到 SD 而不损失质量的主要内容,如果未能解决你的问题,请参考以下文章
将 WPF 画布保存到文件而不损失质量(不使用位图作为中介)