Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何将具有属性的文本直接转换为图像(无需将图形转换为屏幕)_Swift_Macos_Cocoa_Cifilter_Ciimage - Fatal编程技术网

Swift 如何将具有属性的文本直接转换为图像(无需将图形转换为屏幕)

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.

我想将具有属性(即特定字体和大小)的文本直接转换为CIImage,也就是说,无需先将其绘制到屏幕上,这样我就可以使用自定义CIFilter动态更改文本的外观。如何执行此操作?

以下是如何在
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处理起来没有问题。