[英]drawInRect performance too slow
我正在做的是将2张图像合并为单张图像。
这是代码。
UIGraphicsBeginImageContext(CGSizeMake(1024, 768));
[image1 drawInRect:CGRectMake(0, 0, 512, 768)];
[image2 drawInRect:CGRectMake(512, 0, 512, 768)];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
但是drawInRect似乎太慢了。
是否有更快的方式来合并图像?
选项0 - 确保仅在需要绘制时绘制,并且仅绘制您需要绘制的内容。
如果您知道目标大小(可能是self.frame.size
?),则可以从目标大小的两个源图像(展平)创建一个图像, 并避免插值。 这样可以:
当然,这仅在复合材料以低于必须绘制的频率变化时才有意义。
即使您想要两个图像并且您知道它们的大小不会改变,只需将它们调整为必须绘制的大小(如果要放大它们,请监视内存使用情况)。
如果这不是一个选项,您可以改变CGContext
的状态,并降低插值质量。 如果您习惯于类似的CALayer变换,您可能会对低质量或无插值感到满意。
你可以做的一件事就是没有实现-drawRect:而是有两个CALayers,你的两个图像作为它们的内容,然后将一个放在另一个之前。 不确定会更快,但我认为这很可能(因为CA可以在GPU上异步处理绘图)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.