iOS 图片压缩 和等比压缩 指定缩放比例压缩详解手机开发
2023-06-13 09:20:07 时间
- (UIImage *)scaleToSize:(UIImage *)img size:(CGSize)size{ // 创建一个bitmap的context // 并把它设置成为当前正在使用的context UIGraphicsBeginImageContext(size); // 绘制改变大小的图片 [img drawInRect:CGRectMake(0,0, size.width, size.height)]; // 从当前context中创建一个改变大小后的图片 UIImage* scaledImage =UIGraphicsGetImageFromCurrentImageContext(); // 使当前的context出堆栈 UIGraphicsEndImageContext(); //返回新的改变大小后的图片 return scaledImage; }
等比例压缩 -(UIImage *) imageCompressForSize:(UIImage *)sourceImage targetSize:(CGSize)size{ UIImage *newImage = nil; CGSize imageSize = sourceImage.size; CGFloat width = imageSize.width; CGFloat height = imageSize.height; CGFloat targetWidth = size.width; CGFloat targetHeight = size.height; CGFloat scaleFactor = 0.0; CGFloat scaledWidth = targetWidth; CGFloat scaledHeight = targetHeight; CGPoint thumbnailPoint = CGPointMake(0.0, 0.0); if(CGSizeEqualToSize(imageSize, size) == NO){ CGFloat widthFactor = targetWidth / width; CGFloat heightFactor = targetHeight / height; if(widthFactor heightFactor){ scaleFactor = widthFactor; } else{ scaleFactor = heightFactor; scaledWidth = width * scaleFactor; scaledHeight = height * scaleFactor; if(widthFactor heightFactor){ thumbnailPoint.y = (targetHeight - scaledHeight) * 0.5; }else if(widthFactor heightFactor){ thumbnailPoint.x = (targetWidth - scaledWidth) * 0.5; UIGraphicsBeginImageContext(size); CGRect thumbnailRect = CGRectZero; thumbnailRect.origin = thumbnailPoint; thumbnailRect.size.width = scaledWidth; thumbnailRect.size.height = scaledHeight; [sourceImage drawInRect:thumbnailRect]; newImage = UIGraphicsGetImageFromCurrentImageContext(); if(newImage == nil){ NSLog(@"scale image fail"); UIGraphicsEndImageContext(); return newImage; -(UIImage *) imageCompressForWidth:(UIImage *)sourceImage targetWidth:(CGFloat)defineWidth{ UIImage *newImage = nil; CGSize imageSize = sourceImage.size; CGFloat width = imageSize.width; CGFloat height = imageSize.height; CGFloat targetWidth = defineWidth; CGFloat targetHeight = height / (width / targetWidth); CGSize size = CGSizeMake(targetWidth, targetHeight); CGFloat scaleFactor = 0.0; CGFloat scaledWidth = targetWidth; CGFloat scaledHeight = targetHeight; CGPoint thumbnailPoint = CGPointMake(0.0, 0.0); if(CGSizeEqualToSize(imageSize, size) == NO){ CGFloat widthFactor = targetWidth / width; CGFloat heightFactor = targetHeight / height; if(widthFactor heightFactor){ scaleFactor = widthFactor; } else{ scaleFactor = heightFactor; scaledWidth = width * scaleFactor; scaledHeight = height * scaleFactor; if(widthFactor heightFactor){ thumbnailPoint.y = (targetHeight - scaledHeight) * 0.5; }else if(widthFactor heightFactor){ thumbnailPoint.x = (targetWidth - scaledWidth) * 0.5; UIGraphicsBeginImageContext(size); CGRect thumbnailRect = CGRectZero; thumbnailRect.origin = thumbnailPoint; thumbnailRect.size.width = scaledWidth; thumbnailRect.size.height = scaledHeight; [sourceImage drawInRect:thumbnailRect]; newImage = UIGraphicsGetImageFromCurrentImageContext(); if(newImage == nil){ NSLog(@"scale image fail"); UIGraphicsEndImageContext(); return newImage; }
//指定缩放比例压缩 NSData *thumbImageData = UIImageJPEGRepresentation([UIImage imageWithData:logoData], 0.5);
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/3323.html
服务器部署程序员系统优化网站设置运维相关文章
- iOS端数据库解决方案分析详解手机开发
- iOS后台模式开发指南详解手机开发
- iOS判断手机是否开启麦克风详解手机开发
- iOS获取当前设备信息详解手机开发
- iOS获取文件路径详解手机开发
- iOS 获取手机的型号,系统版本,软件名称,软件版本详解手机开发
- iOS TableViewCell 加载时的动画详解手机开发
- ios数据类型转换详解手机开发
- iOS开发笔记 – 网络篇详解手机开发
- iOS 滚动视图的复用问题解决方案详解手机开发
- iOS–自定义相册—对象数组按照时间戳排序详解手机开发
- iOS-网络请求-AFN升级至AFN3.0详解手机开发
- iOS开发—集成百度地图详解手机开发
- iOS开发——高级技术&广告服务详解手机开发
- iOS开发——高级技术&系统应用于系统服务详解手机开发
- appLinux开发探索之路:从iOS APP开始(linux开发ios)