我一直在尝试将两个UIImage混合两天,而且我一直在收到一些BAD_ACCESS错误。首先,我有两个具有相同方向的图像,基本上我使用CoreGraphics进行混合。
一个奇怪的细节,每次我修改代码,第一次编译并在设备上运行它,我可以做任何我想要的,没有任何麻烦。一旦我重新启动应用程序,我就会收到错误并且程序会关闭。
任何人都可以给我一个灯吗?我尝试动态访问baseImage大小,但它也给我带来了糟糕的访问权限。
以下是我如何进行混合的片段。
UIGraphicsBeginImageContext(CGSizeMake(320, 480));
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(context, 0, 480);
CGContextScaleCTM(context, 1.0, -1.0);
CGContextDrawImage(context, rect, [baseImage CGImage]);
CGContextSetBlendMode(context, kCGBlendModeOverlay);
CGContextDrawImage(context, rect, [tmpImage CGImage]);
[transformationView setImage:UIGraphicsGetImageFromCurrentImageContext()];
UIGraphicsEndImageContext();
补充:有时它可以完美地工作,没问题。有时它只是叠加而不混合。其他它崩溃了iPhone。
答案 0 :(得分:4)
很明显,主要问题是每次编辑相同的CGImage。为了摆脱它,我用了
CGImageCreateCopy(sourceImage.CGImage);
现在,我不再崩溃了。如果有人能为此做出更好的解释,我感激不尽。
此致