剪切大png会使ios应用程序崩溃

时间:2016-09-12 09:55:46

标签: ios uiimage png jpeg cgcontext

- (UIImage *)createThumbnailImage:(UIImage *)image withSize:(CGSize)size {
CGRect imageRect = CGRectMake(0.0, 0.0, size.width, size.height);
UIGraphicsBeginImageContext(size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextClearRect(context, CGRectMake(0, 0, size.width, size.height));

CGContextSetInterpolationQuality(context, 0.8);

[image drawInRect:imageRect blendMode:kCGBlendModeNormal alpha:1];

UIImage *thumbnail = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return thumbnail;
}
- (void)viewDidLoad {
[super viewDidLoad];
UIImage *inputImage =  [UIImage imageNamed:@"dog.jpg"];
UIImage *image = [self createThumbnailImage:inputImage withSize:CGSizeMake(640.0, 480.0)]
}

我通过上面的代码获得了缩略图(640 * 480)。而一些奇怪的问题困扰着我。

当我向该方法发送jpg(10000 * 10000)时,它运行良好。

但是当我发送一个相同大小的png时,应用程序会崩溃。

我试图找到一些关于jpg和png之间差异的文档,但这没有任何意义。

有没有人对这个错误有任何想法?

1 个答案:

答案 0 :(得分:0)

-(UIImage *)getNeedImageFrom:(UIImage*)image cropRect:(CGRect)rect
{

    CGImageRef subImage = CGImageCreateWithImageInRect(image.CGImage, rect);
    UIImage *croppedImage = [UIImage imageWithCGImage:subImage];
    CGImageRelease(subImage);
    return croppedImage;
}

请你检查一下这是否解决了你的问题