Android:将图像保存在原始大小的SD卡上

时间:2012-09-25 08:34:09

标签: android camera storage

当我从相机中捕捉图像(从设备主屏幕)并检查SD卡上的图像尺寸时,它显示在300-500 Kb之间。

但是当我使用Camera Intent在我的应用程序中捕获图像并将其保存在SD卡(在新文件夹中)时,它显示的图像大小在5-10 Kb之间。

这是我在onActivityResult拍摄照片后用于将图像保存在SD卡上的代码:

Bitmap bit = (Bitmap) data.getExtras().get("data");
ByteArrayOutputStream bao = new ByteArrayOutputStream();
bit.compress(Bitmap.CompressFormat.JPEG, 100, bao);
byte[] ba = bao.toByteArray();
File imagesFolder = new File(Environment.getExternalStorageDirectory(), "My - Images");
File f = new File(imagesFolder, "test.jpg");
f.createNewFile();
FileOutputStream fo = new FileOutputStream(f);
fo.write(ba);
fo.flush();
fo.close();

如何将其保存为原始大小的图像(300-500 Kb)?

有没有办法在我将它保存到SD卡之前获取图像尺寸?

谢谢

3 个答案:

答案 0 :(得分:1)

您正在使用以下内容来压缩您收到的位图对象:

bit.compress(Bitmap.CompressFormat.JPEG, 100, bao);

这就是你的位图以压缩格式存储的原因。

此外,您可以使用bit.getHeight()bit.getWidth()来获取位图的尺寸。您可以使用bit.getByteCount()来获取位图的实际大小

答案 1 :(得分:1)

检查此处接受的答案,希望它可能适合您

Android Camera Intent: how to get full sized photo?

答案 2 :(得分:0)

首先尝试使用下面的代码找出图片的大小

Camera mCamera = null;
Camera.Parameters camParams = mCamera.getParameters();
Size camSize = camParams.getPictureSize(); 

如果您获得的图片尺寸为5-10 KB,那么您的代码没有任何问题,您可能需要重新访问相机参数才能看到您设置的质量。