zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

iOS 图片压缩 和等比压缩 指定缩放比例压缩详解手机开发

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

服务器部署程序员系统优化网站设置运维