如何将带有属性的文本直接转换为 CIImage(无需绘制到屏幕)
How to Convert Text With Attributes Directly Into a CIImage (Without Drawing to Screen)
我想将具有属性(即特定字体和大小)的文本直接转换为 CIImage——也就是说,无需先将其绘制到屏幕上——这样我就可以使用自定义 CIFilter 动态更改文本的外貌。我该怎么做?
以下是将 NSAttributedString
绘制到 NSImage
上的方法。虽然我没有测试到 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 动态更改文本的外貌。我该怎么做?
以下是将 NSAttributedString
绘制到 NSImage
上的方法。虽然我没有测试到 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!)!