为什么使用 CGContextDrawImage 旋转图像比绘制旋转的 UIImage 慢得多



我从相机获取图像,我必须考虑到它们处于不同的方向。我采取的第一种方法是使用此代码片段来创建正确旋转的UIImage。这将计算CGAffineTransform,然后使用 CGContextDrawImage 绘制图像。

但是,此操作需要 2-3 秒才能完成。

采取的第二种方法是计算我必须旋转图像多少度,以及我是否必须翻转它,然后在绘制UIImage之前应用这些旋转。这种方法花费的时间可以忽略不计。

具体来说,我使用的是 Cocos2D,所以无论哪种情况,我都将UIImage转换为CCTexture2D,用该纹理创建一个精灵,然后绘制它。在第一种情况下,我创建了一个新UIImage,并且有一个未旋转的CCSprite。在第二个中,我使用相同的UIImage但有一个旋转的精灵。

为什么第二种方法要快得多?最终结果是相同的:旋转的图像。似乎无论哪种方式,都必须以相同的方式操作相同的位和字节才能获得此结果。

看看这个问题、实验和答案。 UIImage可能已经在后台进行了其中一些优化(由于我们不知道实现细节,因此没有真正的方法可以知道)。

相关内容

  • 没有找到相关文章

最新更新