之前只知道超出bounds然后通过clipToBounds进行图片的裁剪,后来明白了,这个裁剪只是将超出的部分不做显示了,但是还是那个大图,所以占用内存还是大图的
后来明白了,可以通过一下代码截取图片,图片大小就是rect指定的大小,内存就是小图的了
CGImageRef imageRef = self.imageView.image.CGImage;
CGRect rect = CGRectMake(0.0, 0.0, 600.0, 500.0);
CGImageRef imageRefRect = CGImageCreateWithImageInRect(imageRef, rect);
UIImage *imageRect = [[UIImage alloc] initWithCGImage: imageRefRect];
self.imageView.image = imageRect;
或者另一种方法:可以随意指定 宽度和高度:
UIImage *targetImage = ...;
UIGraphicsBeginImageContext(CGSizeMake(ITEMWIDTH, ITEMHEIGHT));
[targetImage drawInRect: CGRectMake(0, 0, ITEMWIDTH, ITEMHEIGHT)];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); //这里就是我们想要的图片了
后来明白了,可以通过一下代码截取图片,图片大小就是rect指定的大小,内存就是小图的了
CGImageRef imageRef = self.imageView.image.CGImage;
CGRect rect = CGRectMake(0.0, 0.0, 600.0, 500.0);
CGImageRef imageRefRect = CGImageCreateWithImageInRect(imageRef, rect);
UIImage *imageRect = [[UIImage alloc] initWithCGImage: imageRefRect];
self.imageView.image = imageRect;
或者另一种方法:可以随意指定 宽度和高度:
UIImage *targetImage = ...;
UIGraphicsBeginImageContext(CGSizeMake(ITEMWIDTH, ITEMHEIGHT));
[targetImage drawInRect: CGRectMake(0, 0, ITEMWIDTH, ITEMHEIGHT)];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); //这里就是我们想要的图片了
UIGraphicsEndImageContext();
转自:http://www.cocoachina.com/bbs/read.php?tid=98406&fpage=2