web-dev-qa-db-ja.com

プログラムでカメラの解像度(つまり、メガピクセル)を決定するAndroid

私はAndroidアプリケーションを開発しています。これはカメラを使用します。「Androidでメガピクセルのカメラ解像度をプログラムで決定することは可能ですか?」

23
YuDroid

画像解像度とはどういう意味ですか?

解像度とは、画像のピクセル数のことです。解像度は、画像の幅と高さ、および画像の総ピクセル数によって識別される場合があります。たとえば、幅が2048ピクセル、高さが1536ピクセル(2048X1536)の画像には、3,145,728ピクセル(または3.1メガピクセル)が含まれます(乗算されます)。あなたはそれを2048X1536または3.1メガピクセルの画像と呼ぶことができます。カメラのピックアップデバイスのメガピクセルが増えると、生成できる最大サイズの画像も増えます。つまり、5メガピクセルのカメラは、3メガピクセルのカメラよりも大きな画像をキャプチャできます。

例:1936 x 1552/1024000 = 3メガピクセル

11
Heather McVay

カメラオブジェクトがある場合は、以下を試してください。

Android.hardware.Camera.Parameters parameters = camera.getParameters();
Android.hardware.Camera.Size size = parameters.getPictureSize();


int height = size.height;
int width = size.width;
18
wAroXxX

これを試して

public float getBackCameraResolutionInMp()
{
    int noOfCameras = Camera.getNumberOfCameras();
    float maxResolution = -1;
    long pixelCount = -1;
    for (int i = 0;i < noOfCameras;i++)
    {
        Camera.CameraInfo cameraInfo = new CameraInfo();
        Camera.getCameraInfo(i, cameraInfo);

        if (cameraInfo.facing == CameraInfo.CAMERA_FACING_BACK)
        {
            Camera camera = Camera.open(i);;
            Camera.Parameters cameraParams = camera.getParameters();
            for (int j = 0;j < cameraParams.getSupportedPictureSizes().size();j++)
            {
                long pixelCountTemp = cameraParams.getSupportedPictureSizes().get(j).width * cameraParams.getSupportedPictureSizes().get(j).height; // Just changed i to j in this loop
                if (pixelCountTemp > pixelCount)
                {
                    pixelCount = pixelCountTemp;
                    maxResolution = ((float)pixelCountTemp) / (1024000.0f);
                }
            }

            camera.release();
        }
    }

    return maxResolution;
}

この権限をAndroid manifestに追加します

<uses-permission Android:name="Android.permission.CAMERA" />
5
Satish

これで、サポートされているサイズのリストを取得できます。 getSupportedSizes()

最高のサイズは、ピクセル単位でカメラの魂を与えます。

編集:あなたが知らない場合に備えて。

ピクセル単位の解像度=幅X高さ

0
PravinCG

はい、その方法でうまくいきます。ここでもう1つ注意してください。getPictureSize()は、高さと幅が異なるサポートされているサイズのリストを返します。デバイスのカメラのピクセル単位で解像度を計算するには、サイズリストから最大の高さと幅を取得してください。

0
Liverpudlian