首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取UIImage的dpi/ppi?

如何获取UIImage的dpi/ppi?
EN

Stack Overflow用户
提问于 2013-11-14 16:35:43
回答 3查看 7.2K关注 0票数 5

如何在iOS中获取图像的dpi/ppi?也许原始图像文件包含这些信息,所以我可以从NSData获取ppi/dpi?谢谢。

EN

回答 3

Stack Overflow用户

发布于 2014-05-30 05:34:49

要从存储在NSData中的图像中提取DPI,请在您的项目中包含苹果的ImageIO框架,并使用以下内容:

代码语言:javascript
复制
#import <ImageIO/ImageIO.h>

// Set your NSData up
NSData *data = some image data

// Get the DPI of the image
CGImageSourceRef imageRef = CGImageSourceCreateWithData((__bridge CFDataRef)(data), NULL);
CFDictionaryRef imagePropertiesDict = CGImageSourceCopyPropertiesAtIndex(imageRef, 0, NULL);
NSString *dpiHeight = CFDictionaryGetValue(imagePropertiesDict, @"DPIHeight");
NSString *dpiWidth = CFDictionaryGetValue(imagePropertiesDict, @"DPIWidth");

请注意,并非所有图像都包含DPI信息。它可能包含在图像的元数据中,也可能不包含。

这个答案是基于Flar49的答案,这是正确的,但增强了直接从NSData获取信息。有关详细信息,请参阅http://iosdevelopertips.com/data-file-management/get-image-data-including-depth-color-model-dpi-and-more.html

票数 5
EN

Stack Overflow用户

发布于 2014-12-21 16:58:18

Objective-C

获取图像分辨率:

代码语言:javascript
复制
CGFloat imageResolution = myImage.scale * 72.0f;

从标准的UIImage (72dpi)创建300dpi的图像:

代码语言:javascript
复制
UIImage *my300dpiImage = [UIImage imageWithCGImage:mySourceImage.CGImage scale:300.0f/72.0f orientation:UIImageOrientationUp] ;

Swift

获取分辨率:

代码语言:javascript
复制
let imageResolution = myImage.scale * 72.0

更改图像分辨率:

代码语言:javascript
复制
// Just be sure source image is valid
if let source = mySourceImage, let cgSource = source.cgImage {
    let my300dpiImage = UIImage(cgImage: cgSource, scale: 300.0 / 72.0, orientation: source.imageOrientation)
}

请注意,我在swift示例中添加了对源图像方向的考虑,并且还注意到,将分辨率从72 dpi更改为300dpi会导致质量损失,因为您没有图片细节。

重要的一点是,除非图像被渲染,否则分辨率没有任何意义。在那之前,你得到了你得到的..您可以通过设置目标矩形大小来确定查看器所看到的最终分辨率。

由创建者应用程序固定的文件的分辨率不在图像数据本身中,而是在元数据中。如上一答案所述,或在下面的地址:

How to get image metadata in ios

票数 3
EN

Stack Overflow用户

发布于 2019-05-16 21:28:12

Swift 5解决方案:您可以从图像元数据中获取DPI信息。imageData属于NSData类型。

代码语言:javascript
复制
  guard let imageSource = CGImageSourceCreateWithData(imageData, nil),
            let metaData = CGImageSourceCopyPropertiesAtIndex(imageSource, 0, nil) as? [String: Any],
            let dpi = metaData["DPIWidth"] as? Int else {
                return
        }

 print(dpi)   
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19972945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档