iOS 图片处理方法(按比例缩放,指定宽度按比例缩放)
来源:互联网 发布:大庆八一农垦大学淘宝 编辑:程序博客网 时间:2024/05/17 04:15
1.按比例缩放
在这里你传入的cgsize就是你要显示图片的区域,或者就是说设置放大图片的区域部分。
//按比例缩放,size 是你要把图显示到 多大区域 + (UIImage *) imageCompressFitSizeScale:(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; }
2.指定宽度按比例缩放
//指定宽度按比例缩放 -(UIImage *) imageCompressForWidthScale:(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; }
3. 图片压缩
- (NSData *)compressionImageToDataTargetWH:(CGFloat)targetWH maxFileSize:(NSInteger)maxFileSize { if (targetWH <= 0) { targetWH = 1024; } //缩 CGSize newSize = CGSizeMake(self.size.width, self.size.height); CGFloat tempHeight = newSize.height / targetWH; CGFloat tempWidth = newSize.width / targetWH; if (tempWidth > 1.0 && tempWidth > tempHeight) { newSize = CGSizeMake(self.size.width / tempWidth, self.size.height / tempWidth); } else if (tempHeight > 1.0 && tempWidth < tempHeight){ newSize = CGSizeMake(self.size.width / tempHeight, self.size.height / tempHeight); } UIGraphicsBeginImageContext(newSize); [self drawInRect:CGRectMake(0,0,newSize.width,newSize.height)]; UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); //压 CGFloat compression = 0.9f; CGFloat maxCompression = 0.1f; NSData *imageData = UIImageJPEGRepresentation(newImage, compression); while (imageData.length / 1000 > maxFileSize && compression > maxCompression) { compression -= 0.1; imageData = UIImageJPEGRepresentation(newImage, compression); } return imageData; }
0 0
- iOS 图片处理方法(按比例缩放,指定宽度按比例缩放)
- iOS 图片处理方法(按比例缩放,指定宽度按比例缩放)
- iOS 图片处理-按比例缩放 (1.按比例缩放 2.指定宽度按比例缩放)
- ios 图片处理( 1.按比例缩放 2.指定宽度按比例缩放)
- ios 图片处理( 1.按比例缩放 2.指定宽度按比例缩放)
- Android根据屏幕宽度,按比例缩放图片
- android根据屏幕宽度,按比例缩放图片
- 按比例缩放图片
- 图片按比例缩放
- 图片按比例缩放
- 按比例缩放图片
- 图片按比例缩放函数
- 按比例缩放图片
- 按比例缩放图片
- JS按比例缩放图片
- 按比例缩放图片
- js按比例缩放图片
- 图片按比例缩放
- IE8+兼容经验小结
- 应用scikit-learn做文本分类
- iis发布 vs(WCJ)
- 起点
- 进制转换 lightoj 1045
- iOS 图片处理方法(按比例缩放,指定宽度按比例缩放)
- 13. Yii 2.0 缓存介质
- 如何:在十六进制字符串与数值类型之间转换
- 高精度取余
- Cookie实现记住用户名案例
- java方法入栈和出栈
- poj 1722
- Fragment的不够详细篇
- 关于解决真机调试时DDMS里不能打开data文件夹时遇到的一些列问题