我想找到从iPhone / iPad相机中捕获的图像的DPI
这就是我试图获得DPI的方式
CFDictionaryRef exifDict = CMGetAttachment(imageDataSampleBuffer,
kCGImagePropertyExifDictionary ,
NULL);
originalExifDict = (__bridge NSMutableDictionary *)(exifDict);
[originalExifDict objectForKey:(NSString *)kCGImagePropertyDPIHeight]
[originalExifDict objectForKey:(NSString *)kCGImagePropertyDPIWidth]
然而,字典中的两个条目都变为0。 找到DPI的正确方法是什么? 在此先感谢您的帮助
答案 0 :(得分:1)
CGSize size;
NSNumber *width = (NSNumber *)CFDictionaryGetValue(exifDict, kCGImagePropertyDPIWidth);
NSNumber *height = (NSNumber *)CFDictionaryGetValue(exifDict, kCGImagePropertyDPIHeight);
size.width = [width floatValue];
size.height = [height floatValue];
//告诉我它的工作与否。
答案 1 :(得分:0)
该信息不在imageDataSampleBuffer
附带的元数据中。它是在保存图像时写入的(72 dpi),除非,首先,在保存之前编辑元数据时自己手动设置。
对于大多数用途, 无意义,但是,某些软件在将图像放入文档时使用它来计算图像的“正确大小”。因此,300dpi的3000像素正方形图像将出现10英寸(c.25.4cm)的正方形;在72 dpi时,它将近42英寸(约105.8厘米)的正方形。此外,一些在线图像上传器(特别是库存照片库等使用的那些)坚持使用具有高dpi dpi的图像。
答案 2 :(得分:0)
如果您使用的是imagePickerController,请使用以下代码
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);
}];