我正在做的是将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 :(得分:3)
选项0 - 确保仅在需要绘制时绘制,并且仅绘制需要绘制的内容。
如果您知道目的地尺寸(可能是self.frame.size
?),您可以从目标尺寸的两个源图像(展平)创建一个图像,并避免插值。这样可以:
当然,这只有在复合材料的变化频率低于必须绘制的频率时才有意义。
即使你想要两张图片并且你知道它们的尺寸不会改变,只需将它们调整到必须绘制的大小(好吧,如果要放大它们,请监视你的内存使用情况)。
如果这不是一个选项,您可以改变CGContext
的状态,并降低插值质量。如果您习惯于类似的CALayer变换,您可能会对低质量或无插值感到满意。
答案 1 :(得分:1)
你可以做的一件事就是没有实现-drawRect:而是有两个CALayers,你的两个图像作为它们的内容,然后把一个放在另一个之前。不确定会更快,但我认为这很可能(因为CA可以在GPU上异步处理绘图)。