我有一个将文本转换为表情符号的计划。但是,我不知道如何开始。这是我正在寻找的一些屏幕截图。
我的想法是,要实现上述结果,我们应该为每个字符保存字典,但问题是字典如何根据字符结构保存表情符号。
Best Answer-推荐答案 strong>
我建议您使用简单的位图技术。在第一步中,您构建一个黑白位图,其中包含与您想要的最终图像尺寸相同的书面文本。
在第二步中,您将此图像“划分”为一个光栅,例如比最终的表情符号小 20% 以创建重叠效果。
在每个光栅矩形中计算黑色像素。在那里你会得到一个介于 0-100% 黑色像素之间的百分比。如果此百分比(例如超过 40%),则会在此矩形的中心放置一个随机表情符号。
你可以通过添加少量的随机位移来改善效果。
最后的想法
我实现了这个并且效果很好。我可以通过一些小的优化进一步改善图像:
- 对于每个黑色 >40% 的矩形,我将此矩形分为四个区域(左上、右上、左下、右下)。
- 如果其中一个区域有黑色像素,我将该区域计为 1,否则计为 0。
- 这会创建 16 种不同的模式。对于其中一些模式,我将表情符号从矩形的中心移得更远。
例如,如果我得到 1000 ,我将它移到左上角。如果我得到 1010 到左边。
示例代码
以下示例代码演示了所示方法,没有在“最终想法”部分进行调整。它是用 Swift 为 Cocoa 应用程序编写的。您会看到一个简单应用程序的应用程序委托(delegate),它在主窗口中提供了一个文本字段和一个 ImageView 。
您可以完成将文本字段和 ImageView 添加到主窗口的应用程序,并将值绑定(bind)到 socket textField 和 imageView 。您还必须将文本字段值绑定(bind)到 parameterText 属性。
应用程序的输出如下所示:
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
@IBOutlet weak var window: NSWindow!
@IBOutlet weak var textField: NSTextField!
@IBOutlet weak var imageView: NSImageView!
var updateTimer: NSTimer = NSTimer()
let canvasSize = CGSize(width: 1024, height: 768)
let canvasPadding: CGFloat = 32.0
let emojiSize = 20.0
let emojiSet: [NSString] = ["
|