当我从相机中捕捉图像(从设备主屏幕)并检查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卡之前获取图像尺寸?
谢谢
答案 0 :(得分:1)
您正在使用以下内容来压缩您收到的位图对象:
bit.compress(Bitmap.CompressFormat.JPEG, 100, bao);
这就是你的位图以压缩格式存储的原因。
此外,您可以使用bit.getHeight()
和bit.getWidth()
来获取位图的尺寸。您可以使用bit.getByteCount()
来获取位图的实际大小
答案 1 :(得分:1)
检查此处接受的答案,希望它可能适合您
答案 2 :(得分:0)
首先尝试使用下面的代码找出图片的大小
Camera mCamera = null;
Camera.Parameters camParams = mCamera.getParameters();
Size camSize = camParams.getPictureSize();
如果您获得的图片尺寸为5-10 KB,那么您的代码没有任何问题,您可能需要重新访问相机参数才能看到您设置的质量。