【问题标题】:CGImage to NSImage with SwiftCGImage 到 NSImage 与 Swift
【发布时间】:2015-01-02 23:20:59
【问题描述】:

我正在尝试从 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:)

}

【问题讨论】:

  • 下次请粘贴您的代码。代码图像对任何人都没有用。请记住,您的问题应该让其他人能够重现您的问题。如果您不能花时间这样做,请不要问任何问题。
  • 对不起,这是我第一次使用 Xcode 和 Swift,所以我认为这只是我忽略了一个简单的事情。我想在 Xcode 中显示确切的错误,以便更清楚。
  • 有一种方法可以复制并粘贴错误。如果您不知道这种方式,当然,您可以显示错误的图像。但是要重现问题并因此帮助您,需要其他人可以复制和粘贴的代码。你强迫我用手输入你的代码,眯着眼睛看着你的照片。我一点也不喜欢。 :( 让我们体谅...
  • 注明。感谢您的帮助和反馈,我将来一定会这样做。帖子也已编辑。

标签: xcode macos swift xcode6


【解决方案1】:

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

如果你说leftImageRef!.takeUnretainedValue(),你会得到一个CGImage。 (强制解包应该是安全的,但如果你担心这个 NSImage 可能无法绘制,你当然可以更仔细地解包。)

【讨论】:

  • 您可以很容易地自己解决这个问题,只需将光标放在声明点的leftImageRef,然后查看快速帮助。这就是我所做的,这就是我了解到这是Unmanaged<CGImage>? 的原因。其余的都是微不足道的结果。始终检查您拥有的类型;可能不是你想的那样!
  • 谢谢!第一次使用 Xcode,我可能应该阅读更多关于它的功能! :)
猜你喜欢
  • 2014-08-27
  • 1970-01-01
  • 2016-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多