gpt4 book ai didi

android - 如何计算android中自定义相机中的剩余照片数

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:22:30 25 4
gpt4 key购买 nike

我正在尝试计算可以使用我的自定义相机拍摄的剩余照片数量,并将该计数显示给用户。我尝试使用以下代码:

private void numberOfPhotosAvailable() {
long photosAvailable = 0;
StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
resolution=getResolution();
long bytesPerPhoto=resolution/1048576;
long bytesAvailable = (long) stat.getAvailableBlocksLong() * (long) stat.getBlockSizeLong();
long megAvailable = bytesAvailable / 1048576;

System.out.println("Megs :" + megAvailable);
photosAvailable = megAvailable / bytesPerPhoto;
tvAvailablePhotos.setText("" + photosAvailable);
}

获取分辨率的方法。

public long getResolution(){
long resolution=0;
Camera.Parameters params=mCamera.getParameters();
List<Camera.Size> sizes = params.getSupportedPictureSizes();

Camera.Size size = sizes.get(0);
int width=size.width;
int height=size.height;
resolution=width*height;
return resolution;
}

问题:手机相机中显示的计数与我的应用中显示的计数有很大差异。

那么这样做的正确方法是什么?

注意:我只会以可用的最高质量拍摄图像。因此,我只根据一种分辨率计算计数。

最佳答案

不可能找到 JPEG/PNG 压缩输出图像的确切大小。压缩算法经过优化,使用尽可能小的尺寸但保留图像像素(尽管 JPEG 略有损耗)。

但是,您可以通过拍摄多张样本照片并计算平均压缩率来估计图像的数量。

来自 Wikipedia :

JPEG typically achieves 10:1 compression with little perceptible loss in image quality.

因此估计的存储大小可以计算为:

int bytes = width * height * 2 / compressionRatio;

这里乘以 2 因为在 RGB_565 配置中,它需要 2 个字节来存储 1 个像素。

关于android - 如何计算android中自定义相机中的剩余照片数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46225646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com