首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Swift NSImage到CGImage

Swift NSImage到CGImage
EN

Stack Overflow用户
提问于 2014-07-06 20:41:19
回答 5查看 16.4K关注 0票数 18

如何在Swift中将NSImage转换为CGImage?在Objective-C中,我是这样做的:

代码语言:javascript
复制
- (CGImageRef)CGImage {
    NSData *imageData = self.TIFFRepresentation;
    CGImageSourceRef source = CGImageSourceCreateWithData((__bridge CFDataRef)imageData, NULL);
    CGImageRef maskRef =  CGImageSourceCreateImageAtIndex(source, 0, NULL);
    return maskRef;
}

现在,我尝试使用:

代码语言:javascript
复制
extension NSImage {
    var CGImage: CGImageRef {
    get {
        let imageData = self.TIFFRepresentation
        let source = CGImageSourceCreateWithData(imageData as CFDataRef, nil)
        let maskRef = CGImageSourceCreateImageAtIndex(source, UInt(0), nil)
        return maskRef;
    }
    }
}

我无法编译,我在let maskRef ...行得到错误:Could not find an overload for 'init' that accepts the supplied arguments'

EN

回答 5

Stack Overflow用户

发布于 2015-01-04 04:17:32

下面是我用来将NSImage转换为CGImage的方法:

代码语言:javascript
复制
let image = NSImage(named:"image")
if let image = image {
    var imageRect = CGRect(x: 0, y: 0, width: image.size.width, height: image.size.height)
    let imageRef = image.cgImage(forProposedRect: &imageRect, context: nil, hints: nil)
}
票数 35
EN

Stack Overflow用户

发布于 2017-12-19 21:33:50

Swift 5代码:-

代码语言:javascript
复制
if let image = NSImage(named: "Icon"){
    let cgImage = image.cgImage(forProposedRect: nil, context: nil, hints: nil)
}
票数 11
EN

Stack Overflow用户

发布于 2014-07-06 20:48:03

啊,我找到解决方案了。这是因为在Swift中你只需要一个非托管对象(我只是不太明白这意味着什么)。但是这段代码现在可以工作了:

代码语言:javascript
复制
extension NSImage {
    var CGImage: CGImageRef {
    get {
        let imageData = self.TIFFRepresentation
        let source = CGImageSourceCreateWithData(imageData as CFDataRef, nil).takeUnretainedValue()
        let maskRef = CGImageSourceCreateImageAtIndex(source, UInt(0), nil)
        return maskRef.takeUnretainedValue();
    }
    }
}
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24595908

复制
相关文章

相似问题

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