从后台获取图片、相机拍照片,或者从相册读取图片的时候,如果ImageView的本身就是固定的100 x 100,那么载入1500 x 1500的图片是很浪费内存的。当图片的数量比较多的时候就会闪退。
1500 x 1500的内存占用是1500 x 1500 x 4bit
可以用这个方法查看图片的大小(length单位:kb)
NSData * imageData = UIImageJPEGRepresentation(image,1);
length = [imageData length]/1000
从后台获取的图片,最好由后台进行压缩
本地的图片:
第一种按照一个新的尺寸,生成图片
- (UIImage*)imageWithImage:(UIImage*)image
scaledToSize:(CGSize)newSize;
{
UIGraphicsBeginImageContext( newSize );
[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
第二种按照一个缩放比例,生成图片,可以保持宽高比
-(UIImage*)imageWithImage:(UIImage *)image
resizeFactor:(CGFloat)scale
{
CGSize originalSize = image.size;
CGSize newSize = CGSizeMake(originalSize.width * scale, originalSize.height* scale);
UIGraphicsBeginImageContext(newSize);
[image drawInRect:CGRectMake(0,0,newSize.width, newSize.height)];
UIImage * newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}