搜索
您的当前位置:首页正文

iOS如何等比例去压缩图片大小(有彩蛋)

来源:知库网

我们在项目当中,有时候需要一些图片,美工不能够及时给我们的时候,这时候哥们程序员也要想办法去应对(这两天怼美工有点凶了哈)

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知识!学习大礼包相送哦!


Top