UIImage的等比例压缩和缩放实现

更新时间:2023-07-30 14:01:56 阅读: 评论:0

UIImage的等⽐例压缩和缩放实现可以⽤延展为UIImage扩展以下⽅法,⽅便项⽬中以后的使⽤
等⽐例压缩图⽚
.h
/**
*  等⽐例压缩图⽚
*
*  @param sourceImage 原图
*  @param size        压缩⽐例
*
*  @return
*/
+(UIImage *) imageCompressForSize:(UIImage *)sourceImage targetSize:(CGSize)size;
//压缩图⽚(等⽐例)
+(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;
}
el{
scaleFactor = heightFactor;
}
scaledWidth = width * scaleFactor;
scaledHeight = height * scaleFactor;
if(widthFactor > heightFactor){
thumbnailPoint.y = (targetHeight - scaledHeight) * 0.5;
}el if(widthFactor < heightFactor){
电脑蓝牙怎么开thumbnailPoint.x = (targetWidth - scaledWidth) * 0.5;
}
}
与春节有关的诗句UIGraphicsBeginImageContext(size);
CGRect thumbnailRect = CGRectZero;
thumbnailRect.size.width = scaledWidth;
thumbnailRect.size.height = scaledHeight;
[sourceImage drawInRect:thumbnailRect];
newImage = UIGraphicsGetImageFromCurrentImageContext();
if(newImage == nil){
NSLog(@"scale image fail");
}
UIGraphicsEndImageContext();
return newImage;
}
等⽐例缩放
.h
/
**
*  等⽐例缩放
*
*  @param image    需要缩放的图⽚
*  @param scaleSize 缩放⽐例
*
*  @return缩放后的图⽚
此时此夜难为情*/
+ (UIImage *)scaleImage:(UIImage *)image toScale:(float)scaleSize;
- (UIImage *)scaleImage:(UIImage *)image toScale:(float)scaleSize
{
UIGraphicsBeginImageContext(CGSizeMake(image.size.width * scaleSize, image.size.height * scaleSize));
[image drawInRect:CGRectMake(0, 0, image.size.width * scaleSize, image.size.height * scaleSize)];
UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return scaledImage;
}
图⽚等⽐例显⽰
螳螂吃瘊子
.h
/**
*  图⽚等⽐例显⽰
*
*  @param img 获取的图⽚
*  @param imageView  显⽰图⽚的imageView
*
*  @return
*/
+(void)resizeFrameWithImg:(UIImage *)img andImageView:(UIImageView *)imageView;
.m
+(void)resizeFrameWithImg:(UIImage *)img andImageView:(UIImageView *)imageView
{
//img的尺⼨
CGFloat imgWidth=img.size.width;
CGFloat imgHeight=img.size.height;
//imgView的尺⼨
CGFloat vWidth=imageView.frame.size.width;
CGFloat vHeight=imageView.frame.size.height;
//宽⾼⽐
CGFloat dImg=imgWidth/imgHeight;
CGFloat dView=vWidth/vHeight;整人的聊天套路
芸豆炖排骨if (dImg > dView) {
CGFloat changedHeight=vWidth * (imgHeight/imgWidth);
imageView.frame=CGRectMake(igin.x, (vHeight-changedHeight)/2 + igin.y, vWidth, changedHeight);
}
el
{
CGFloat changedWidth=vHeight * (imgWidth/imgHeight);
imageView.frame=CGRectMake(igin.x + (vWidth-changedWidth)/2, igin.y, changedWidth, vHeight);
}
}
压缩图⽚
/**
*  压缩图⽚
*
*  @param img  压缩之前
*  @param size 尺⼨
*
*  @return压缩后的
*/
+ (UIImage *)scaleToSize:(UIImage *)img size:(CGSize)size;
.m
+ (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;
}
如果有什么不对的地⽅,望各位⼤神给出意见。

本文发布于:2023-07-30 14:01:56,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1102028.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:改变   缩放   延展   实现   锻炼   蓝牙
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图