我们在项目当中,有时候需要一些图片,美工不能够及时给我们的时候,这时候哥们程序员也要想办法去应对(这两天怼美工有点凶了哈)
imageView.contentMode = UIViewContentModeScaleAspectFill;
当看到这张图片有几m的时候,内心肯定很崩溃,我们如何去得到一张等比例,而且占用内存小的图片呢?
我给封装了一个UIImage的分类提供大家
#import@interface UIImage (Extension)
- (UIImage *)scaleToWidth:(CGFloat)width;
@end
#import "UIImage+Extension.h"
@implementation UIImage (Extension)
#pragma mark -按照你想要的比例去缩放图片
- (UIImage *)scaleToWidth:(CGFloat)width{
// 如果传入的宽度比当前宽度还要大,就直接返回
if (width > self.size.width) {
return self;
}
// 计算缩放之后的高度
CGFloat height = (width / self.size.width) * self.size.height;
// 初始化要画的大小
CGRect rect = CGRectMake(0, 0, width, height);
// 1. 开启图形上下文
UIGraphicsBeginImageContext(rect.size);
// 2. 画到上下文中 (会把当前image里面的所有内容都画到上下文)
[self drawInRect:rect];
// 3. 取到图片
UIImage * image = UIGraphicsGetImageFromCurrentImageContext();
// 4. 关闭上下文
UIGraphicsEndImageContext();
// 5. 返回
return image;
}
@end
计算出比例,然后通过图形上下文将图片画出来,分类具有很好的移植性,兄弟们直接拿出用就行
//使用
UIImage * demoImg = [UIImage imageNamed:@"123"];;
demoImg =[demoImg scaleToWidth:600];
最后彩蛋
如何获取屏幕的图
.h
//直接加入到上面那个分类去即可
+ (UIImage *)getScreenImage;
.m
+ (UIImage *)getScreenImage{
//获取主窗口
UIWindow * window = [UIApplication sharedApplication].keyWindow;
// 1. 开启图形上下文
UIGraphicsBeginImageContext(window.frame.size);
// 2. 将 window 里面的内容画到上下文中
[window drawViewHierarchyInRect:window.bounds afterScreenUpdates:NO];
// 3. 取出图片
UIImage * image = UIGraphicsGetImageFromCurrentImageContext();
// 4. 关闭上下文
UIGraphicsEndImageContext();
// 5. 返回数据
return image;
}
转载自微信公众号:IT界 的一些事,微信识别二维码关注他,学习更多IT知识!学习大礼包相送哦!