Программное определение разрешения камеры (т.е. мегапикселей) в Android

Я разрабатываю приложение для Android в версии 2.2, в котором используется камера. Теперь может ли кто-нибудь сказать мне, что «Возможно ли программно определить разрешение камеры в мегапикселях в Android»


person YuDroid    schedule 05.08.2011    source источник


Ответы (5)


Что означает разрешение изображения?

Разрешение относится к количеству пикселей в изображении. Разрешение иногда определяется шириной и высотой изображения, а также общим количеством пикселей в изображении. Например, изображение шириной 2048 пикселей и высотой 1536 пикселей (2048X1536) содержит (умножение) 3 145 728 пикселей (или 3,1 мегапикселя). Вы можете назвать это изображением 2048X1536 или 3,1-мегапиксельным изображением. По мере того, как количество мегапикселей в устройстве захвата в вашей камере увеличивается, увеличивается и изображение максимального размера, которое вы можете создать. Это означает, что 5-мегапиксельная камера способна снимать изображение большего размера, чем 3-мегапиксельная камера.

Пример: 1936 x 1552 / 1024000 = 3 мегапикселя.

person Heather McVay    schedule 14.06.2012
comment
Привет, @Heather McVay, Модель моего мобильного телефона — Samsung Galaxy Star Pro GT-S7262. и в этой подробной спецификации мобильного устройства показан Samsung веб-сайт/руководство пользователя/приобретенная коробка, распечатавшая только 2MP, но когда я получаю максимальное разрешение этого мобильного телефона 2048x1536. поэтому он дает примерно 3,072 МП, следуя приведенной выше ссылке/коду выше. поэтому, наконец, я сказал, что описанная выше процедура не всегда дает правильный результат. пожалуйста, помогите мне узнать правильные мегапиксели в мобильном телефоне Android. - person challa sathish kumar; 26.02.2014
comment
Спецификация устройства Micromax Bolt A35 показывает 2MP (мегапикселя), но дает изображение с разрешением 2592 x 1936. при использовании описанной выше процедуры ((2592x1936)/102400)= приблизительно 5MP это неверный результат. Поэтому, пожалуйста, помогите мне узнать точные мегапиксели данного мобильного устройства Android. пожалуйста, обратитесь к моему подробному вопросу. Как найти точные мегапиксели камеры в Android мобильный. - person challa sathish kumar; 26.02.2014
comment
Уважаемые программисты 1 мегапиксель = 1 000 000 пикселей, а не 1 024 000. Копирование/вставка без проверки - корень всех зол - person Osagui Aghedo; 17.09.2020

если у вас есть объект камеры, попробуйте:

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


int height = size.height;
int width = size.width;
person wAroXxX    schedule 05.08.2011
comment
Но это ширина и высота изображения. Но на самом деле мне нужно разрешение камеры в мегапикселях, из которого я хочу соответствующим образом обрабатывать изображения. - person YuDroid; 05.08.2011
comment
YuDroid, используйте ответ, предоставленный @wAroXxX, который дает вам высоту и ширину изображений, которые будет выводить камера, затем используйте уравнение, данное PravinCG. Разрешение в пикселях = ширина X высота, что дает вам разрешение в пикселях, и разделите его на 1 024 000 . Это даст вам ваше разрешение в мегапикселях. Итак: мегапиксели = (ширина * высота)/1024000; - person TChadwick; 18.10.2012
comment
Уважаемые программисты 1 мегапиксель = 1 000 000 пикселей, а не 1 024 000. Копирование/вставка без проверки - корень всех зол - person Osagui Aghedo; 17.09.2020

Попробуй это

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

<uses-permission android:name="android.permission.CAMERA" />
person Satish    schedule 18.11.2014
comment
@Selçuk Çoltu дает правильные результаты ????? - person Gyan Swaroop Awasthi; 07.01.2021

Вы можете это сделать, чтобы получить список поддерживаемых размеров. getSupportedSizes()

Максимальный размер даст вам разрешение камеры в пикселях.

РЕДАКТИРОВАТЬ: На всякий случай, если вы не знаете.

Разрешение в пикселях = ширина X высота

person PravinCG    schedule 05.08.2011

Да, этот способ работает для меня. Еще одно замечание: getPictureSize() вернет список поддерживаемых размеров с разной высотой и шириной. Чтобы рассчитать разрешение в пикселях камеры устройства, возьмите наибольшую высоту и ширину из списка размеров.

person Liverpudlian    schedule 27.05.2013