我想找到从iPhone/iPad相机拍摄的图像的DPI
这就是我获取DPI 的方法
CFDictionaryRef exifDict = CMGetAttachment(imageDataSampleBuffer,
kCGImagePropertyExifDictionary ,
NULL);
originalExifDict = (__bridge NSMutableDictionary *)(exifDict);
[originalExifDict objectForKey:(NSString *)kCGImagePropertyDPIHeight]
[originalExifDict objectForKey:(NSString *)kCGImagePropertyDPIWidth]
然而,字典中的两个条目都变成了0。找到DPI的正确方法是什么?提前感谢的帮助
CGSize size;
NSNumber *width = (NSNumber *)CFDictionaryGetValue(exifDict, kCGImagePropertyDPIWidth);
NSNumber *height = (NSNumber *)CFDictionaryGetValue(exifDict, kCGImagePropertyDPIHeight);
size.width = [width floatValue];
size.height = [height floatValue];
//告诉我它的工作与否。
信息不在imageDataSampleBuffer
附带的元数据中。它在保存图像时写入(72 dpi(,除非您在保存之前编辑元数据时首先手动设置它。
对于大多数目的,它是没有意义的,然而,一些软件在将图像放入文档时使用它来计算图像的"正确大小"。因此,300 dpi的3000像素正方形图像将呈现10英寸(约25.4厘米(的正方形;在72 dpi时,它将接近42英寸(约105.8厘米(的正方形。此外,一些在线图像上传器(尤其是库存照片库等使用的图像上传器(坚持要求图像具有高dpi。
如果您正在使用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);
}];