CGContextDrawImage返回错误访问

时间:2010-03-24 19:10:05

标签: iphone exc-bad-access cgcontext blending

我一直在尝试将两个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。

1 个答案:

答案 0 :(得分:4)

很明显,主要问题是每次编辑相同的CGImage。为了摆脱它,我用了

    CGImageCreateCopy(sourceImage.CGImage);

现在,我不再崩溃了。如果有人能为此做出更好的解释,我感激不尽。

此致