CGImage 到 NSImage Swift

CGImage to NSImage with Swift

我正在尝试从 CGImage 创建 NSImage,但不断出现这些错误。我关注了 documentation 我尝试使用 xcode.

中的提示

import Cocoa
import AppKit
import CoreGraphics

let image = NSImage(named:"image")
if let image = image {
    var imageRect:CGRect = CGRectMake(0, 0, image.size.width, image.size.height)
    var imageRef = image.CGImageForProposedRect(&imageRect, context: nil, hints: nil)

    var leftImageRect:CGRect = CGRectMake(0, 0, image.size.width/2.0, image.size.height)
    var leftImageRef = image.CGImageForProposedRect(&imageRect, context: nil, hints: nil)
    var leftImage = NSImage(CGImage:leftImageRef, size:NSZeroSize)

    var rightImageRect:CGRect = CGRectMake(image.size.width/2.0, 0, image.size.width/2.0, image.size.height)
    var rightImageRef = image.CGImageForProposedRect(&imageRect, context: nil, hints: nil)
    var rightImage = NSImage(CGImage:rightImageRef)
    var testImage = NSImage(CGImage:rightImageRef, flipped:)

}

因为leftImageRef不是一个CGImage。这是一个Unmanaged<CGImage>?。您需要先解包并提供内存管理,然后才能使用它。

如果你说 leftImageRef!.takeUnretainedValue() 你会得到一个 CGImage。 (强制解包应该是安全的,但是如果你担心这个NSImage可能画不出来,当然可以再小心解包。)