Определяне на разделителната способност на камерата (т.е. мегапиксели) програмно в 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,072MP, като следвате горната връзка/горния код. така че най-накрая казах, че горната процедура не винаги дава правилен резултат. моля, помогнете ми да намеря правилните мегапиксели в android mobile. - 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