iOS开发之UIImage等比缩放
来源:互联网 发布:电气工程制图软件 编辑:程序博客网 时间:2024/06/06 11:04
前面讲了截取UIImage指定大小区域,很方便的截取UIImage
。今天要和大家分享的是UIImage
的缩放。
两种缩放:
- 缩放到指定大小,也就是指定的
size
. - 等比缩放。
缩放到指定大小
- (UIImage*)imageCompressWithSimple:(UIImage*)image scaledToSize:(CGSize)size{ UIGraphicsBeginImageContext(size); [image drawInRect:CGRectMake(0,0,size.width,size.height)]; UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return newImage;}
等比缩放
通过缩放系数
- (UIImage*)imageCompressWithSimple:(UIImage*)image scale:(float)scale{ CGSize size = image.size; CGFloat width = size.width; CGFloat height = size.height; CGFloat scaledWidth = width * scale; CGFloat scaledHeight = height * scale; UIGraphicsBeginImageContext(size); // this will crop [image drawInRect:CGRectMake(0,0,scaledWidth,scaledHeight)]; UIImage* newImage= UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return newImage;}
scale
是缩放系数 。
通过计算得到缩放系数
- (UIImage*)imageByScalingAndCroppingForSize:(CGSize)targetSize{ UIImage *sourceImage = [UIImage imageNamed:@"test.jpg"]; UIImage *newImage = nil; CGSize imageSize = sourceImage.size; CGFloat width = imageSize.width; CGFloat height = imageSize.height; CGFloat targetWidth = targetSize.width; CGFloat targetHeight = targetSize.height; CGFloat scaleFactor = 0.0; CGFloat scaledWidth = targetWidth; CGFloat scaledHeight = targetHeight; CGPoint thumbnailPoint = CGPointMake(0.0,0.0); if (CGSizeEqualToSize(imageSize, targetSize) == NO) { CGFloat widthFactor = targetWidth / width; CGFloat heightFactor = targetHeight / height; if (widthFactor > heightFactor) scaleFactor = widthFactor; // scale to fit height else scaleFactor = heightFactor; // scale to fit width scaledWidth= width * scaleFactor; scaledHeight = height * scaleFactor; // center the image if (widthFactor > heightFactor) { thumbnailPoint.y = (targetHeight - scaledHeight) * 0.5; } else if (widthFactor < heightFactor) { thumbnailPoint.x = (targetWidth - scaledWidth) * 0.5; } } UIGraphicsBeginImageContext(targetSize); // this will crop CGRect thumbnailRect = CGRectZero; thumbnailRect.origin = thumbnailPoint; thumbnailRect.size.width= scaledWidth; thumbnailRect.size.height = scaledHeight; [sourceImage drawInRect:thumbnailRect]; newImage = UIGraphicsGetImageFromCurrentImageContext(); if(newImage == nil) NSLog(@"could not scale image"); //pop the context to get back to the default UIGraphicsEndImageContext(); return newImage;}
很久之前写了一篇文章解决MWPhotoBrowser中的SDWebImage加载大图导致的内存警告问题。这个我记得当时从服务器拿到的照片大概有10几M的样子,加载出来会导致内存警告。所以我当时通过修改SDWebImage源码,就是把下载下来的照片进行缩放,内存就降下来了。一般情况下应该不会加载这么大的照片的,用户要是知道,早把你的APP给删掉了。
0 0
- iOS开发之UIImage等比缩放
- iOS开发之UIImage等比缩放
- IOS开发之UI——UIImage缩放
- iOS开发笔记之二十七——UIImage图片的移动、旋转、缩放和裁剪
- Android 之 Bitmap等比缩放
- IOS开发基础之UIImage
- UIImage 裁剪图片和等比列缩放图片
- iOS开发:UIImage 图片处理:截图,缩放,设定大小,存储
- UIImage等比拉伸
- UIImage的扩展方法——裁剪图片和等比列缩放图片
- UIImage的扩展方法——裁剪图片和等比列缩放图片-翻转-圆形等
- UIImage的扩展方法——裁剪图片和等比列缩放图片
- UIImage图像--IOS开发
- IOS 对UIImage图片进行缩放
- iphone开发 UIImage图片的缩放、拉伸
- iOS之UIImage详情
- iOS之UIImage性能
- uiimage 缩放
- Android学习笔记——HelloWorld
- Android Download机制详解
- JavaScript自增、自减运算符与表达式语法
- assert()函数用法总结
- git rebase简介(基本篇)
- iOS开发之UIImage等比缩放
- 解决myeclipse中不能自动装箱拆箱问题
- 查找某个命令相应文件所在目录的方法
- gmock学习
- Ubuntu无法配置VPN
- android注解
- DownloadProvider 简介
- 实验室台式机,ubuntu15.04系统,不能上网,设置静态ip和MAC
- Construct Binary Tree from Preorder and Inorder Traversal