我正在开发一个应用程序,它从Web服务器下载一系列图像并在应用程序中显示它们。图像大约是615x725来自服务器,但只会在应用程序中以大约200x230显示。我的应用程序中的内存使用率现在非常高,我正在定期收到内存警告。它们是通过这组电话下载的:
同步ASIHTTPRequest(在GCD后台线程中)到NSData
[UIImage imageWithData:...]
[image forceLoad] (see below)
[UIImageView initWithImage:...]
[imageview setFrame:...]
我是否还需要做更多工作以确保我的内存不会被不必要的大UIImage数据所困扰?或者UIImageView会为我处理这个吗?
forceload方法:
- (void) forceLoad{
const CGImageRef cgImage = [self CGImage];
const int width = CGImageGetWidth(cgImage);
const int height = CGImageGetHeight(cgImage);
const CGColorSpaceRef colorspace = CGImageGetColorSpace(cgImage);
const CGContextRef context = CGBitmapContextCreate(
NULL, /* Where to store the data. NULL = don’t care */
width, height, /* width & height */
8, width * 4, /* bits per component, bytes per row */
colorspace, kCGImageAlphaNoneSkipFirst);
CGContextDrawImage(context, CGRectMake(0, 0, width, height), cgImage);
CGContextRelease(context);
}
答案 0 :(得分:0)
您可以按如下方式调整大小和图像,希望有所帮助
UIImage *newImage;
UIImage *olDImage = [UIImage imageWithData:imageData] ;
UIGraphicsBeginImageContext(CGSizeMake(200,230));
[olDImage drawInRect:CGRectMake(0, 0,200,230)];
newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();