Swift 如何将具有属性的文本直接转换为图像(无需将图形转换为屏幕)
我想将具有属性(即特定字体和大小)的文本直接转换为CIImage,也就是说,无需先将其绘制到屏幕上,这样我就可以使用自定义CIFilter动态更改文本的外观。如何执行此操作?以下是如何在Swift 如何将具有属性的文本直接转换为图像(无需将图形转换为屏幕),swift,macos,cocoa,cifilter,ciimage,Swift,Macos,Cocoa,Cifilter,Ciimage,我想将具有属性(即特定字体和大小)的文本直接转换为CIImage,也就是说,无需先将其绘制到屏幕上,这样我就可以使用自定义CIFilter动态更改文本的外观。如何执行此操作?以下是如何在NSImage上绘制nsattributed字符串。虽然我没有测试到CIImage的转换(最后一行),但应该不会太难: let string = NSAttributedString(string: "Hello World!", attributes: [NSFontAttributeName: NSFont.
NSImage
上绘制nsattributed字符串。虽然我没有测试到CIImage
的转换(最后一行),但应该不会太难:
let string = NSAttributedString(string: "Hello World!", attributes: [NSFontAttributeName: NSFont.labelFontOfSize(10)])
let image = NSImage(size: string.size())
image.lockFocus()
NSGraphicsContext.saveGraphicsState()
NSGraphicsContext.currentContext()!.shouldAntialias = true
string.drawAtPoint(NSZeroPoint)
NSGraphicsContext.restoreGraphicsState()
image.unlockFocus()
let ciimage = CIImage(data: image.TIFFRepresentation!)!
非常感谢。这就成功了。此外,转换到CIImage的过程也很顺利,我的定制CIFilter处理起来没有问题。