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;
}
如果有什么不对的地⽅,望各位⼤神给出意见。