【发布时间】:2016-12-16 12:10:18
【问题描述】:
最近我在我的项目中使用 PHAssets 替换旧的资产。但是,当我使用我的应用程序缩放一些图片时,我发现它通常会崩溃。 我用调试模式,发现是内存问题。 我使用下面的代码来调整图片大小
+(UIImage*)scaleRetangleToFitLen:(UIImage *)img sWidth:(float)wid sHeight:(float)hei{
CGSize sb = img.size;;
if (img.size.height/img.size.width > hei/wid) {
sb = CGSizeMake(wid,wid*img.size.height/img.size.width);
}else{
sb = CGSizeMake(img.size.width*hei/img.size.height,hei);
}
if (sb.width > img.size.width || sb.height > img.size.height) {
sb = img.size;
}
UIImage* scaledImage = nil;
UIGraphicsBeginImageContext(sb);
[img drawInRect:CGRectMake(0,0, sb.width, sb.height)];
scaledImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
img = nil;
return scaledImage;
}
代码时内存会增加50M左右
[img drawInRect:CGRectMake(0,0, sb.width, sb.height)]
运行,即使方法完成,它也不会被释放。 宽高为304*228,图片原始尺寸约为3264*2448,返回的图片为304*228;这意味着我最终想要的真实图片只是304*228大小的图片,但需要50 +M 内存.. 有没有办法释放 drawInRect: 函数占用的内存? (@autoreleasepool 不起作用~????????)
【问题讨论】:
标签: ios objective-c image phasset