如何在Swift中将NSImage转换为CGImage?在Objective-C中,我是这样做的:
- (CGImageRef)CGImage {
NSData *imageData = self.TIFFRepresentation;
CGImageSourceRef source = CGImageSourceCreateWithData((__bridge CFDataRef)imageData, NULL);
CGImageRef maskRef = CGImageSourceCreateImageAtIndex(source, 0, NULL);
return maskRef;
}
现在,我尝试使用:
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'
发布于 2015-01-04 04:17:32
下面是我用来将NSImage转换为CGImage的方法:
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)
}
发布于 2017-12-19 21:33:50
Swift 5代码:-
if let image = NSImage(named: "Icon"){
let cgImage = image.cgImage(forProposedRect: nil, context: nil, hints: nil)
}
发布于 2014-07-06 20:48:03
啊,我找到解决方案了。这是因为在Swift中你只需要一个非托管对象(我只是不太明白这意味着什么)。但是这段代码现在可以工作了:
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();
}
}
}
https://stackoverflow.com/questions/24595908
复制相似问题