Note that there are some explanatory texts on larger screens.

plurals
  1. POHow to get shutter speed, aperture, and ISO values on iPhone
    text
    copied!<p>I have written code like this : </p> <pre><code>-(IBAction)startCapture { //session object captureSession = [[AVCaptureSession alloc]init]; captureSession.sessionPreset = AVCaptureSessionPresetMedium; AVCaptureVideoPreviewLayer *previewLayer = [AVCaptureVideoPreviewLayer layerWithSession:captureSession]; previewLayer.frame = CGRectMake(0, 10, 320, 200); ////self.view.frame; // [self.view.layer addSublayer:previewLayer]; NSError *error = nil; AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; //input object AVCaptureDeviceInput *inputDevice = [[AVCaptureDeviceInput alloc]initWithDevice:device error:&amp;error]; [captureSession addInput:inputDevice]; stillImageOutput = [[AVCaptureStillImageOutput alloc] init]; NSDictionary *outputSettings = [[NSDictionary alloc] initWithObjectsAndKeys: AVVideoCodecJPEG, AVVideoCodecKey, nil]; [stillImageOutput setOutputSettings:outputSettings]; [captureSession addOutput:stillImageOutput]; [captureSession startRunning]; } -(IBAction) captureNow { AVCaptureConnection *videoConnection = nil; for (AVCaptureConnection *connection in stillImageOutput.connections) { for (AVCaptureInputPort *port in [connection inputPorts]) { if ([[port mediaType] isEqual:AVMediaTypeVideo] ) { videoConnection = connection; break; } } if (videoConnection) { break; } } NSLog(@"about to request a capture from: %@", stillImageOutput); [stillImageOutput captureStillImageAsynchronouslyFromConnection:videoConnection completionHandler: ^(CMSampleBufferRef imageSampleBuffer, NSError *error) { CFDictionaryRef exifAttachments = CMGetAttachment( imageSampleBuffer, kCGImagePropertyExifDictionary, NULL); NSLog(@"exif Attachments:%@",exifAttachments); if (exifAttachments) { NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageSampleBuffer]; UIImage *image = [[UIImage alloc] initWithData:imageData]; self.vImage.image = image; // Do something with the attachments. } else NSLog(@"no attachments"); }]; } </code></pre> <p>to capture the images. But I want to know the shutter speed, ISO value and aperture while capturing. How can I find out these values? I tried the following:</p> <pre><code>[stillImageOutput captureStillImageAsynchronouslyFromConnection:videoConnection completionHandler: ^(CMSampleBufferRef imageSampleBuffer, NSError *error) { CFDictionaryRef exifAttachments = CMGetAttachment( imageSampleBuffer, kCGImagePropertyExifDictionary, NULL); NSDictionary *exifDict = (NSDictionary *)exifAttachments; NSLog(@"\n exif data = %@",exifDict); CFNumberRef aperaturevalue = CMGetAttachment( imageSampleBuffer, kCGImagePropertyExifApertureValue, NULL); NSNumber *num = (NSNumber *)aperaturevalue; NSLog(@"\n AperatureValue : %@",num); CFNumberRef shutter = CMGetAttachment( imageSampleBuffer, kCGImagePropertyExifShutterSpeedValue, NULL); NSNumber *shunum = (NSNumber *)shutter; NSLog(@"\n shuttervalue : %@",shunum); CFArrayRef isoRef = CMGetAttachment( imageSampleBuffer, kCGImagePropertyExifISOSpeedRatings, NULL); NSArray *iso = (NSArray *)isoRef; NSLog(@"Iso value : %@",iso); } </code></pre> <p>but it is giving output like this:</p> <pre class="lang-none prettyprint-override"><code>exif data = { ApertureValue = "2.970853605202583"; ExposureMode = 0; ExposureProgram = 2; FNumber = "2.8"; Flash = 32; MeteringMode = 1; SceneType = 1; SensingMethod = 2; WhiteBalance = 0; } 2011-06-23 14:35:14.955 CameraExample[1464:307] AperatureValue : (null) 2011-06-23 14:35:14.981 CameraExample[1464:307] shuttervalue : (null) 2011-06-23 14:35:14.999 CameraExample[1464:307] Iso value : (null) </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload