shshnk
shshnk

Reputation: 1691

Not able to find the DPI for an image in iOS

I want to find the DPI for an image that has been captured from iPhone/iPad Camera

this is how i am trying to get the DPI

 CFDictionaryRef exifDict = CMGetAttachment(imageDataSampleBuffer,
                                            kCGImagePropertyExifDictionary ,
                                            NULL);
originalExifDict = (__bridge NSMutableDictionary *)(exifDict);
[originalExifDict objectForKey:(NSString *)kCGImagePropertyDPIHeight]
[originalExifDict objectForKey:(NSString *)kCGImagePropertyDPIWidth]

However both the entries in the dictionary come to be 0. What is the correct way to find the DPI ? Thanks in advance for the help

Upvotes: 3

Views: 1203

Answers (3)

Chandan Reddy
Chandan Reddy

Reputation: 221

If you are using imagePickerController use this below code

NSURL *assetURL = [info objectForKey:UIImagePickerControllerReferenceURL];
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library assetForURL:assetURL
         resultBlock:^(ALAsset *asset)  {
             NSMutableDictionary *imageMetadata = nil;
             NSDictionary *metadata = asset.defaultRepresentation.metadata;
             imageMetadata = [[NSMutableDictionary alloc] initWithDictionary:metadata];
             NSLog (@"imageMetaData from AssetLibrary %@",imageMetadata);

             NSString *dpi = [imageMetadata objectForKey:@"DPIHeight"];

             NSLog (@"Dpi: %@",dpi);

         }
        failureBlock:^(NSError *error) {
            NSLog (@"error %@",error);
        }];

Upvotes: 0

Wildaker
Wildaker

Reputation: 2533

The information isn't in the metadata that comes with your imageDataSampleBuffer. It is written (72 dpi) at the time the image is saved, unless you have, first, manually set it yourself when editing the metadata, before the save.

For most purposes, it is meaningless, However, some software uses it to calculate the "correct size" of an image when placing it in a document. A 3000 pixel square image at 300 dpi will thus appear 10 inches (c.25.4 cm) square; at 72 dpi it will be nearly 42 inches (c.105.8 cm) square. Also, some online image uploaders (especially those used by stock photo libraries and the like) insist on images having high-ish dpi.

Upvotes: 0

Rushabh
Rushabh

Reputation: 3203

    CGSize size;     
    NSNumber *width = (NSNumber *)CFDictionaryGetValue(exifDict, kCGImagePropertyDPIWidth);
    NSNumber *height = (NSNumber *)CFDictionaryGetValue(exifDict, kCGImagePropertyDPIHeight);
    size.width = [width floatValue];
    size.height = [height floatValue];

//Tell me its work or not.

Upvotes: 1

Related Questions