2012-11-13 35 views
0

我知道有很多其詢問是否可以設置快門速度/ ISO等問題,這似乎並不可能當前的快門速度/ ISO ...獲取Android上

,但是否至少有可能獲得像快門速度,光圈和ISO? (先不先拍照並掃描exif值...)

我的意思是像某種實時預覽系統/硬件當前設置的值。

回答

0

您可以設置使用Camera2阿比我想快門速度和曝光時間,我不很瞭解。但是,可以從拍攝照片時從相機獲取的byte []數據中讀取exif數據。

如果有人希望得到當前,而不是使用Camera1 Api或Camera2,ISO,曝光時間和快門速度值設置的那個。對於Camera1 Api,將數據寫入FileOutputStream並使用ExifInterface讀取Exif數據。您可以使用此方法將每個元數據寫入字節。獲取數據後,可以處理該文件,並使用Bitmap.compress();

 private PictureCallback mPicture = new PictureCallback() { 

      @Override 
      public void onPictureTaken(byte[] data, Camera camera) { 
       long startTime = System.currentTimeMillis(); 

       File pictureFile = getOutputMediaFile(MEDIA_TYPE_IMAGE); 
       FileOutputStream fos = null; 
       Bitmap bitmap = null; 

       if (pictureFile == null) { 
        return; 
       } 

       try { 
        fos = new FileOutputStream(pictureFile); 
        // TODO Writes Exif Data to image 
        System.out.println("************ EXIF ************"); 
        fos.write(data); 
        ExifInterface exifInterface = new ExifInterface(pictureFile.getAbsolutePath()); 
        String model = exifInterface.getAttribute(ExifInterface.TAG_MODEL); 
        String make = exifInterface.getAttribute(ExifInterface.TAG_MAKE); 
        String flash = exifInterface.getAttribute(ExifInterface.TAG_FLASH); 
        String exposureMode = exifInterface.getAttribute(ExifInterface.TAG_EXPOSURE_MODE); 

        String focalLengthString = exifInterface.getAttribute(ExifInterface.TAG_FOCAL_LENGTH); 
        String isoString = exifInterface.getAttribute(ExifInterface.TAG_ISO_SPEED_RATINGS); 
        String apertureString = exifInterface.getAttribute(ExifInterface.TAG_APERTURE_VALUE); 
        String exposureTimeString = exifInterface.getAttribute(ExifInterface.TAG_EXPOSURE_TIME); 
        String shutterSpeedString = exifInterface.getAttribute(ExifInterface.TAG_SHUTTER_SPEED_VALUE); 

        Double focalLength = exifInterface.getAttributeDouble(ExifInterface.TAG_FOCAL_LENGTH, 0); 
        Double iso = exifInterface.getAttributeDouble(ExifInterface.TAG_ISO_SPEED_RATINGS, 0); 
        Double aperture = exifInterface.getAttributeDouble(ExifInterface.TAG_APERTURE_VALUE, 0); 
        Double exposureTime = exifInterface.getAttributeDouble(ExifInterface.TAG_EXPOSURE_TIME, 0); 
        Double shutterSpeed = exifInterface.getAttributeDouble(ExifInterface.TAG_SHUTTER_SPEED_VALUE, 0); 

        System.out.println("CameraActivity model " + model); 
        System.out.println("CameraActivity make " + make); 
        System.out.println("CameraActivity flash " + flash); 
        System.out.println("CameraActivity exposureMode " + exposureMode); 
        System.out.println("CameraActivity focalLengthString " + focalLengthString + ", focalLength " + focalLength); 
        System.out.println("CameraActivity isoString " + isoString + ", iso " + iso); 
        System.out.println("CameraActivity apertureString " + apertureString + ", aperture " + aperture); 
        System.out.println("CameraActivity exposureTimeString " + exposureTimeString + ", exposureTime " + exposureTime); 
        System.out.println("CameraActivity shutterSpeedString " + shutterSpeedString + ", shutterSpeed " + shutterSpeed); 

        System.out.println("************ EXIF ************"); 

       } catch (FileNotFoundException e) { 
        System.out.println("CameraActivity onPictureTaken() File not found: " + e.getMessage()); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } finally { 
        try { 
         if (fos != null) { 
          fos.close(); 
         } 
        } catch (IOException e) { 
         e.printStackTrace(); 
        } 
        sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(pictureFile))); 
        fos = null; 
        pictureFile = null; 

} 

壓縮圖像爲PNG或JPG這些成果爲我的我的設備

************ EXIF ************ 
CameraActivity model General Mobile 4G Dual 
CameraActivity make General Mobile 
CameraActivity flash 24 
CameraActivity exposureMode 0 
CameraActivity focalLengthString 1150/1000, focalLength 1.15 
CameraActivity isoString 262, iso 262.0 
CameraActivity apertureString 260/100, aperture 2.6 
CameraActivity exposureTimeString 0.03333333333333333, exposureTime 0.03333333333333333 
CameraActivity shutterSpeedString 4906/1000, shutterSpeed 4.906