最近工程里捕捉到创建二维码时偶尔会闪退,最后发现跟EAGLContext相关,问题已经处理了,清空EAGLContext,重新设置EAGLContext,有遇到相关问题的网友可评论,我回头贴上处理方案的代码
关键地方是[EAGLContext setCurrentContext:nil];
- (UIImage*)resizeCodeImage:(CIImage*)imagewithSize:(CGSize)size {
EAGLContext *curContext = [EAGLContext currentContext];
if(curContext) {
[EAGLContext setCurrentContext:nil];
}
CGRect extent = CGRectIntegral(image.extent);
CGFloatscaleWidth = size.width/CGRectGetWidth(extent);
CGFloatscaleHeight = size.height/CGRectGetHeight(extent);
size_twidth =CGRectGetWidth(extent) * scaleWidth;
size_theight =CGRectGetHeight(extent) * scaleHeight;
CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceGray();
CGContextRef contentRef = CGBitmapContextCreate(nil, width, height, 8, 0, colorSpaceRef, (CGBitmapInfo)kCGImageAlphaNone);
CGColorSpaceRelease(colorSpaceRef);
CIContext *context = [CIContext contextWithOptions:nil];
CGImageRefimageRef = [contextcreateCGImage:imagefromRect:extent];
CGContextSetInterpolationQuality(contentRef, kCGInterpolationNone);
CGContextScaleCTM(contentRef, scaleWidth, scaleHeight);
CGContextDrawImage(contentRef, extent, imageRef);
CGImageRefimageRefResized =CGBitmapContextCreateImage(contentRef);
CGContextRelease(contentRef);
CGImageRelease(imageRef);
UIImage*img = [UIImageimageWithCGImage:imageRefResized];
if(curContext) {
[EAGLContext setCurrentContext:curContext];
}
CGImageRelease(imageRefResized);
returnimg;
}
网友评论