UIImage图片压缩和截取
2015-06-15 17:39
501 查看
//这个方法是把一张UIImage压缩成newSize的尺寸
-(UIImage*)imageWithImageSimple:(UIImage*)image scaledToSize:(CGSize)newSize
{
UIGraphicsBeginImageContext(newSize);
[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
/*******截取中间部分*******/
- (UIImage *)scaleImage:(UIImage *)image toScale:(CGSize)reSize
{
//先按要显示的大小去比例缩放下图片,这里压缩成245*245的大小
UIImage *scaledImage = [self imageWithImageSimple:image scaledToSize:CGSizeMake(245, 245)];
//计算截取位置。这里我们考虑一般拍照边界位置可能存在全白或全黑的情况,多数重要的会在中间位置。所以计算下截取是重绘图片的中间位置
float drawW = 0.0;
float drawH = 0.0;
CGSize size_new = scaledImage.size;
if (size_new.width > reSize.width)
{
drawW = (size_new.width - reSize.width)/2.0;
}
if (size_new.height > reSize.height) {
drawH = (size_new.height - reSize.height)/2.0;
}
NSLog(@"drawW=====w==%f\n--------drawH==%f\n\n",drawW,drawH);
//截取截取大小为需要显示的大小。取图片中间位置截取
CGRect myImageRect = CGRectMake(drawW, drawH, reSize.width, reSize.height);
UIImage* bigImage= scaledImage;
scaledImage = nil;
CGImageRef imageRef = bigImage.CGImage;
CGImageRef subImageRef = CGImageCreateWithImageInRect(imageRef, myImageRect);
UIGraphicsBeginImageContext(reSize);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextDrawImage(context, myImageRect, subImageRef);
UIImage* smallImage = [UIImage imageWithCGImage:subImageRef];
UIGraphicsEndImageContext();
CGImageRelease(subImageRef);
return smallImage;
}
-(UIImage*)imageWithImageSimple:(UIImage*)image scaledToSize:(CGSize)newSize
{
UIGraphicsBeginImageContext(newSize);
[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
/*******截取中间部分*******/
- (UIImage *)scaleImage:(UIImage *)image toScale:(CGSize)reSize
{
//先按要显示的大小去比例缩放下图片,这里压缩成245*245的大小
UIImage *scaledImage = [self imageWithImageSimple:image scaledToSize:CGSizeMake(245, 245)];
//计算截取位置。这里我们考虑一般拍照边界位置可能存在全白或全黑的情况,多数重要的会在中间位置。所以计算下截取是重绘图片的中间位置
float drawW = 0.0;
float drawH = 0.0;
CGSize size_new = scaledImage.size;
if (size_new.width > reSize.width)
{
drawW = (size_new.width - reSize.width)/2.0;
}
if (size_new.height > reSize.height) {
drawH = (size_new.height - reSize.height)/2.0;
}
NSLog(@"drawW=====w==%f\n--------drawH==%f\n\n",drawW,drawH);
//截取截取大小为需要显示的大小。取图片中间位置截取
CGRect myImageRect = CGRectMake(drawW, drawH, reSize.width, reSize.height);
UIImage* bigImage= scaledImage;
scaledImage = nil;
CGImageRef imageRef = bigImage.CGImage;
CGImageRef subImageRef = CGImageCreateWithImageInRect(imageRef, myImageRect);
UIGraphicsBeginImageContext(reSize);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextDrawImage(context, myImageRect, subImageRef);
UIImage* smallImage = [UIImage imageWithCGImage:subImageRef];
UIGraphicsEndImageContext();
CGImageRelease(subImageRef);
return smallImage;
}
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 按右键另存图片只能存BMP
- photoshop去除图片上的水印
- 图片引发的溢出危机(图)
- C#实现把彩色图片灰度化代码分享
- C#使用DeflateStream解压缩数据文件的方法
- C#监控文件夹并自动给图片文件打水印的方法
- 纯CSS实现的当鼠标移上图片添加阴影效果代码
- 随鼠标移动的图片或文字特效代码
- CSS 图片横向排列实现代码
- 超级经典一套鼠标控制左右滚动图片带自动翻滚
- 用css实现图片垂直居中的使用技巧
- C#调用WinRar执行rar、zip压缩的方法
- C++实现读取图片长度和宽度