0

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

但是当我使用相机意图在我的应用程序中捕获图像并将其保存在 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 卡之前获取图像大小?

谢谢你

4

3 回答 3

1

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

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

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

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

于 2012-09-25T09:03:31.587 回答
1

检查此处接受的答案,希望它对您有用

Android相机意图:如何获得全尺寸照片?

于 2012-09-25T11:33:57.727 回答
0

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

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

如果你得到的图片大小是5-10 KB,那么你的代码没有问题,你可能需要重新访问你的相机参数,看看你设置了什么质量。

于 2012-09-25T09:09:45.807 回答