gpt4 book ai didi

ios - 使用扩展/UIgraphicscontext 将表情符号(字符串)呈现为 iOS 中可能的最高分辨率图像

转载 作者:搜寻专家 更新时间:2023-10-30 21:59:21 26 4
gpt4 key购买 nike

因此众所周知,苹果的 unicode 表情支持图像可以在高达 160x160 像素的分辨率下提取。有一个工具可以在 OS X 上通过从“apple color emoji”字体中提取数据来做到这一点:https://github.com/tmm1/emoji-extractor

我有兴趣在 iOS 上以类似的方式提取/利用苹果的表情符号图像,我找到了以下解决方案并且非常喜欢这里的实现:https://stackoverflow.com/a/38809531/4556704

extension String {
func image() -> UIImage {
let size = CGSize(width: 30, height: 35)
UIGraphicsBeginImageContextWithOptions(size, false, 0);
UIColor.whiteColor().set()
let rect = CGRect(origin: CGPointZero, size: size)
UIRectFill(CGRect(origin: CGPointZero, size: size))
(self as NSString).drawInRect(rect, withAttributes: [NSFontAttributeName: UIFont.systemFontOfSize(30)])
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}

}

但是,我在使用此实现时遇到了一个问题。如果我使用上面的字符串扩展名,很明显结果图像的分辨率不是 160x160 像素。我的意思是,如果我要在我的项目 Assets 中包含一张 160x160 的图像,我无法生成质量相当的图像。

这是什么原因,我可以在不向我的项目导入超过 1700 个表情符号图像的情况下解决这个问题吗?我认为 iOS 上的字体必须仍然包含生成 160x160 图像样本所需的数据。字符串扩展非常理想,因为它允许我比简单地导入所有这些图像更自由地引用表情符号字符。

我认为这可能需要一些低级代码,这可能比它的值(value)更麻烦,但我真的很想知道更多关于这个问题的根源和可能的修复方法。我确信这归因于苹果没有以高于必要的水平呈现表情符号,但肯定有某种方法可以覆盖它。我也知道还有其他高分辨率的表情符号图像集,这个问题与此无关。

编辑: mismatched resolutions

编辑 2016 年 10 月 18 日:我得出的结论是,这个问题可以归因于这样一个事实,即被采样的源图像不是假定可能的最高分辨率。表情符号似乎没有以高于 48x48 像素的分辨率呈现,当已经证明表情符号图像可以在 OS X 上呈现高达 160x160 像素时,并且可以从“Apple Color Emoji.ttf/.ttc”中提取"为 160x160 像素。我不确定这个问题是否有可能的解决方案,因为这似乎是 iOS 使用映射到 png 图像数据的 unicode 字符代码的方式强加的硬性限制。

最佳答案

您的问题是您采用了特定字体大小的字符串,然后将其强制放入另一个特定大小的区域。两者可能不匹配,导致绘制的图像被缩放以适合。

要么计算给定字符串和字体所需的大小,要么计算所需的字体大小以使给定字符串适合分配的大小。

关于ios - 使用扩展/UIgraphicscontext 将表情符号(字符串)呈现为 iOS 中可能的最高分辨率图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40090668/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com