加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

macos – 使用swift读取CFDictionary中的值

发布时间:2020-12-14 05:49:22 所属栏目:百科 来源:网络整理
导读:我刚开始使用swift和cocoa.我正在尝试创建一个执行图像处理的基本应用程序. 我已经获得了图像的所有信息: let imageRef:CGImageSourceRef = CGImageSourceCreateWithURL(url,nil).takeUnretainedValue()let imageDict:CFDictionaryRef = CGImageSourceCopyP
我刚开始使用swift和cocoa.我正在尝试创建一个执行图像处理的基本应用程序.

我已经获得了图像的所有信息:

let imageRef:CGImageSourceRef = CGImageSourceCreateWithURL(url,nil).takeUnretainedValue()
let imageDict:CFDictionaryRef = CGImageSourceCopyPropertiesAtIndex(imageRef,nil).takeUnretainedValue()

该词典包含以下信息:

{
    ColorModel = Gray;
    DPIHeight = 300;
    DPIWidth = 300;
    Depth = 1;
    Orientation = 1;
    PixelHeight = 4167;
    PixelWidth = 4167;
    "{Exif}" =     {
        ColorSpace = 65535;
        DateTimeDigitized = "2014:07:09 20:25:49";
        PixelXDimension = 4167;
        PixelYDimension = 4167;
    };
    "{TIFF}" =     {
        Compression = 1;
        DateTime = "2014:07:09 20:25:49";
        Orientation = 1;
        PhotometricInterpretation = 0;
        ResolutionUnit = 2;
        Software = "Adobe Photoshop CS6 (Macintosh)";
        XResolution = 300;
        YResolution = 300;
    };
}

现在我想用以下代码读取DPI的值,并且“__conversion”存在一些问题,我不明白.

let dpiH:NSNumber = CFDictionaryGetValue(imageDict,kCGImagePropertyDPIWidth)

我做错了什么,怎样才能达到字典所需的值?

我发现通过将CFDictionary“转换”为Swift字典来访问属性要容易得多.
let imageSource = CGImageSourceCreateWithURL(imageURL,nil)
let imageProperties = CGImageSourceCopyPropertiesAtIndex(imageSource,nil) as Dictionary
let dpiWidth = imageProperties[kCGImagePropertyDPIWidth] as NSNumber

Swift 2.0的快速更新(原谅所有if let – 我只是快速制作了这段代码):

import UIKit
import ImageIO

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        if let imagePath = NSBundle.mainBundle().pathForResource("test",ofType: "jpg") {
            let imageURL = NSURL(fileURLWithPath: imagePath)
            if let imageSource = CGImageSourceCreateWithURL(imageURL,nil) {
                if let imageProperties = CGImageSourceCopyPropertiesAtIndex(imageSource,nil) as Dictionary? {
                    let pixelWidth = imageProperties[kCGImagePropertyPixelWidth] as! Int
                    print("the image width is: (pixelWidth)")
                }
            }
        }
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读