2016-10-09 27 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); 
      } 

をそれを得るために一つの方法を見つけましたが、このアプローチは3.8またはそれに近いなめらかのような値をバックretern。それはデバイスによって異なります。しかし、この値は、30-35に近い値でなければなりません。

私は別の解決策を見つけました。私は写真を撮るとき、私は写真のプロパティを開いて、私は何を得るexextly見て、私は

enter image description here

を必要とするものを、私は全体のプロパティのセットを組み合わせた画像

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。しかし、もう一度私はこのような間違ったvaleuを得る473/100 ...私はそれが何を意味するのかわからない... Valeuはapproximatlyである必要があります30-35 ...

私は間違って何ですか?

答えて

0

私は答えを見つけました。

35ミリ当量が作物因子として知られている一定数を乗じあなた得焦点距離であろう@Aleks G

よります。この要因は、メーカーやモデルによって大きく異なります。たとえば、多くのNikon DSLRカメラでは1.5です。多くのCanon DSLRでは1.6です。 Apple iPhone 5の場合は6.99、Samsung Galaxy S3の場合は7.6などです

私の知る限り、Androidはデバイスのカメラのクロップファクタを決定するためのAPIを提供していません。

あなたが使ってみることができる1つのトリックがあります。デバイスのカメラで写真を撮影すると、FocalLengthIn35mmFilm exifタグが搭載されているデバイスがあるため、この手法を試すことができます。しかし、私のHuaweiはそうではありません。

他のデバイスの中には、焦点距離の2つのフィールドがあります。最初のものは実際の焦点距離、もう1つは35mm相当です。もう一度、すべてではありません。同じHuaweiの電話はありませんが、私のiPhone 5はそうです。

長いストーリーを短くするために、デバイスで取得する焦点距離から35mm相当分を計算する方法はありません。

、最終的に私はちょうど性質なタグ

TAG_FOCAL_LENGTH_IN_35MM_FILM 

の私のリストに追加し、それが利用可能な場合、今私はそれ

得ることができます
関連する問題