Разработвам приложение за Android във версия 2.2, което използва камера. Сега може ли някой да ми каже, че „Възможно ли е програмно определяне на разделителната способност на камерата в мегапиксели в Android“
Определяне на разделителната способност на камерата (т.е. мегапиксели) програмно в Android
Отговори (5)
Какво означава резолюция на изображението?
Разделителната способност се отнася до броя на пикселите в изображението. Разделителната способност понякога се определя от ширината и височината на изображението, както и от общия брой пиксели в изображението. Например, изображение с ширина 2048 пиксела и височина 1536 пиксела (2048X1536) съдържа (умножено) 3 145 728 пиксела (или 3,1 мегапиксела). Можете да го наречете 2048X1536 или 3,1 мегапикселова снимка. С увеличаването на мегапикселите в захващащото устройство във вашия фотоапарат се увеличава и възможният максимален размер на изображението, което можете да създадете. Това означава, че 5-мегапикселова камера може да заснеме по-голямо изображение от 3-мегапикселова камера.
Пример: 1936 x 1552 / 1024000 = 3 мегапиксела
ако имате обекта на камерата, опитайте:
android.hardware.Camera.Parameters parameters = camera.getParameters();
android.hardware.Camera.Size size = parameters.getPictureSize();
int height = size.height;
int width = size.width;
Опитайте тази
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" />
Можете да направите това, за да получите списък с поддържани размери. getSupportedSizes()
Най-големият размер ще ви даде разделителната способност на камерата в пиксели.
РЕДАКТИРАНЕ: Само в случай, че не знаете.
Разделителна способност в пиксели = ширина X височина
Да, този начин ми действа. Още една бележка тук, getPictureSize() ще върне списък с поддържани размери с различни височини и ширини. За да изчислите разделителната способност в пиксели на камерата на устройството, вземете най-голямата височина и ширина от списъка с размери.