我正在UIView的drawRect中绘制CGBitmapContext的片段。什么是最好的CGBitmapInfo枚举值,以确保性能最佳?现在我正在使用kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big
,但我也看到了这个stackoverflow问题片段,它提出了一个替代方案:
Why does this code decompress a UIImage so much better than the naive approach?
// makes system don't need to do extra conversion when displayed.
kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Little
我的CGBitmapContext是可变的,因此用户可以在其上绘图,向其添加图像等。
答案 0 :(得分:3)
我使用kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big
vs kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Little
进行测试,并且分析器确实向我显示代码路径略有不同。
kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Little
直接复制内存,kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big
通过转换函数。
这对我在CGBitmapContext
(即使在iPod 4上)绘制路径所花费的总时间几乎没有影响,然后调用setNeedsDisplayInRect:
在屏幕上显示它们。此外,由于总时间基本相同,所以我坚持kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big
。
修改的
我切换回kCGBitmapByteOrder32Little
以便与使用BGRA(小端)字节顺序的其他iOS框架(如AVFoundation)具有更好的兼容性,因为它对性能没有影响。