我从相机获取图像,我必须考虑到它们处于不同的方向。我采取的第一种方法是使用此代码片段来创建正确旋转的UIImage
。这将计算CGAffineTransform
,然后使用 CGContextDrawImage
绘制图像。
但是,此操作需要 2-3 秒才能完成。
我采取的第二种方法是计算我必须旋转图像多少度,以及我是否必须翻转它,然后在绘制UIImage
之前应用这些旋转。这种方法花费的时间可以忽略不计。
具体来说,我使用的是 Cocos2D,所以无论哪种情况,我都将UIImage
转换为CCTexture2D
,用该纹理创建一个精灵,然后绘制它。在第一种情况下,我创建了一个新UIImage
,并且有一个未旋转的CCSprite
。在第二个中,我使用相同的UIImage
但有一个旋转的精灵。
为什么第二种方法要快得多?最终结果是相同的:旋转的图像。似乎无论哪种方式,都必须以相同的方式操作相同的位和字节才能获得此结果。
看看这个问题、实验和答案。 UIImage
可能已经在后台进行了其中一些优化(由于我们不知道实现细节,因此没有真正的方法可以知道)。