objective c-无法在iOS中找到图像的DPI



我想找到从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);
        }];

最新更新