2016-10-09 41 views
0

我使用camera2API工作,我需要獲得focal lenght屬性。如何從照片屬性中獲得35焦距?

我找到了一個方法,從照相機特性

float[] f = characteristics.get(CameraCharacteristics.LENS_INFO_AVAILABLE_FOCAL_LENGTHS); 

      for (float d : f) { 
       Logger.logGeneral("LENS_INFO_AVAILABLE_FOCAL_LENGTHS : " + d); 
      } 

得到它,但這種方法retern回值像3.8或不便接近它。它取決於設備。但是這個值必須大致接近30-35 ...

然後我找到了另一個解決方案。當我拍照我打開照片的屬性,看到exextly我所得到的,什麼我需要

enter image description here

我tryed直接從圖像

private JSONObject getJsonProperties() { 
    JSONObject properties = new JSONObject(); 

    final ExifInterface exif = getExifInterface(); 
    final String [] tagProperties = {TAG_DATETIME, TAG_DATETIME_DIGITIZED, TAG_EXPOSURE_TIME, 
      TAG_FLASH, TAG_FOCAL_LENGTH, TAG_GPS_ALTITUDE, TAG_GPS_ALTITUDE_REF, TAG_GPS_DATESTAMP, 
      TAG_GPS_LATITUDE, TAG_GPS_LATITUDE_REF, TAG_GPS_LONGITUDE, TAG_GPS_LONGITUDE_REF, 
      TAG_GPS_PROCESSING_METHOD, TAG_GPS_TIMESTAMP, TAG_IMAGE_LENGTH, TAG_IMAGE_WIDTH, TAG_ISO, TAG_MAKE, 
      TAG_MODEL, TAG_ORIENTATION, TAG_SUBSEC_TIME, TAG_SUBSEC_TIME_DIG, TAG_SUBSEC_TIME_ORIG, TAG_WHITE_BALANCE}; 

    for (String tag : tagProperties){ 
     try { 
      properties.put(tag, exif.getAttribute(tag)); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 

    return properties; 
} 

private ExifInterface getExifInterface() { 
    ExifInterface exif = null; 
    try { 
     exif = new ExifInterface(ImageSaver.getImageFilePath()); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return exif; 
} 

我結合一套完整的性能得到這個屬性當然還包括我非常需要的一個TAG_FOCAL_LENGTH。但我再次得到這樣的錯誤瓦努這樣的473/100 ...我不知道這是什麼意思... Valeu必須是大約30-35 ...

我在做什麼錯?

回答

0

最終我找到了答案。

根據@Aleksģ

的相當於35mm是:將獲得的焦距乘以一定數目的,被稱爲作物因子。對於不同的製造商甚至型號,這個因素是非常不同的。例如,對於許多尼康數碼單反相機,它是1.5;對於許多佳能數碼單反它是1.6;對於蘋果iPhone 5它是6.99,三星Galaxy S3是7.6,等等。

據我所知,Android不提供API來確定設備相機的裁剪因子。

雖然你可以嘗試使用一種技巧。一旦你用設備的相機拍了一張照片,一些設備將填充FocalLengthIn35mmFilm exif標籤 - 所以你可以嘗試使用這種技術。不是所有的手機都能做到這一點,例如,我的華爲不是。

一些其他設備將爲焦距填充兩個字段 - 第一個是實際使用的焦距,第二個是35mm等效。再次,並非所有人都這樣做同樣的華爲手機沒有,但我的iPhone 5。

爲了長話短說,沒有辦法從設備上獲得的焦距中計算出35mm等價物。

,最終我只是添加到我的屬性列表等標籤

TAG_FOCAL_LENGTH_IN_35MM_FILM 

現在,如果它是可用,我可以得到它