我只是从迅捷和可可开始.我正在尝试创建一个进行图像处理的基本应用.
I'm just starting with swift and cocoa. I'm trying to create a basic app that does image manipulation.
我已经准备好了图像的所有信息:
I've allready got all information of the image with this:
let imageRef:CGImageSourceRef = CGImageSourceCreateWithURL(url, nil).takeUnretainedValue() let imageDict:CFDictionaryRef = CGImageSourceCopyPropertiesAtIndex(imageRef, 0, 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"存在一些问题.
now I'd like to read the value for the DPI with following code and there is some problem with "__conversion" I don't understand.
let dpiH:NSNumber = CFDictionaryGetValue(imageDict, kCGImagePropertyDPIWidth)我在做错什么,如何获得所需的字典值?
what am I doing wrong and how can I get to the desired values of the dictionary?
推荐答案我发现通过将CFDictionary转换"为Swift字典来访问属性要容易得多.
I've found it much easier to access the properties by 'converting' the CFDictionary to a Swift dictionary.
let imageSource = CGImageSourceCreateWithURL(imageURL, nil) let imageProperties = CGImageSourceCopyPropertiesAtIndex(imageSource, 0, nil) as Dictionary let dpiWidth = imageProperties[kCGImagePropertyDPIWidth] as NSNumber
Swift 2.0的快速更新(对所有if let都不好意思-我刚刚编写了这段代码):
Quick update for Swift 2.0 (excuse all the if lets - I just quickly crafted this code):
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, 0, nil) as Dictionary? { let pixelWidth = imageProperties[kCGImagePropertyPixelWidth] as! Int print("the image width is: \(pixelWidth)") } } } } }更多推荐
快速读取CFDictionary中的值
发布评论