1.写一个UIimage的类别 如:
![]()
定义一个等比例压缩图片的方法
//压缩图片
- (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 *)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;
}
2.压缩图片到100kb一下
在![]()
类里边写两个类方法
#pragma mark - 压缩图片
+ (UIImage *)compressImageWithImage:(UIImage *)chosenImage size:(CGSize)size
{
UIImage *imageTemp = [chosenImage scaleToSize:chosenImage size:size];
NSData *imgData = UIImagePNGRepresentation(imageTemp);
float fcom = 0.00;
// 判断image的data是不是大于100k
if (imgData.length]] ]]> IMAGE_COMPRESSION) {
fcom = IMAGE_COMPRESSION/imgData.length;
imgData = UIImageJPEGRepresentation(chosenImage, fcom);
imageTemp = [UIImage imageWithData:imgData];
}
return imageTemp;
}
3.求等比例的尺寸
//求比例的方法
+ (CGSize)equalProportionWithImageSize:(CGSize)imageSize imageViewSize:(CGSize)imageViewSize
{
NSInteger bek = 1;
NSInteger screenWidth = [[UIScreen mainScreen] currentMode].size.width;
if (screenWidth > 320) {
bek = 2;
}
CGFloat w1 = imageViewSize.width * bek;
CGFloat h1 = imageViewSize.height * bek;
CGFloat w2 = imageSize.width;
CGFloat h2 = imageSize.height;
CGSize mySize = CGSizeZero;
if (w1/h1 < w2/h2) {
mySize.width = w1;
mySize.height = mySize.width * h2 / w2;
}
else
{
mySize.height = h1;
mySize.width = mySize.height * w2 / h2;
}
return mySize;
}
+ (UIImage *)compressImageWithImage:(UIImage *)chosenImage size:(CGSize)size
{
UIImage *imageTemp = [chosenImage scaleToSize:chosenImage size:size];
NSData *imgData = UIImagePNGRepresentation(imageTemp);
float fcom = 0.00;
// 判断image的data是不是大于100k
if (imgData.length]] ]]> IMAGE_COMPRESSION) {
fcom = IMAGE_COMPRESSION/imgData.length;
imgData = UIImageJPEGRepresentation(chosenImage, fcom);
imageTemp = [UIImage imageWithData:imgData];
}
return imageTemp;
}
3.求等比例的尺寸
//求比例的方法
+ (CGSize)equalProportionWithImageSize:(CGSize)imageSize imageViewSize:(CGSize)imageViewSize
{
NSInteger bek = 1;
NSInteger screenWidth = [[UIScreen mainScreen] currentMode].size.width;
if (screenWidth > 320) {
bek = 2;
}
CGFloat w1 = imageViewSize.width * bek;
CGFloat h1 = imageViewSize.height * bek;
CGFloat w2 = imageSize.width;
CGFloat h2 = imageSize.height;
CGSize mySize = CGSizeZero;
if (w1/h1 < w2/h2) {
mySize.width = w1;
mySize.height = mySize.width * h2 / w2;
}
else
{
mySize.height = h1;
mySize.width = mySize.height * w2 / h2;
}
return mySize;
}
4.调用方法
UIImageView *imageView = [[UIImageView alloc] init];
UIImage *image = [UIImage imageWithContentsOfFile:pathTemp];
CGSize mySize = [TTPublicClassMethod equalProportionWithImageSize:image.size imageViewSize:cell.imageView.frame.size];
imageView .image = [TTPublicClassMethod compressImageWithImage:image size:mySize];
imageView .image = [TTPublicClassMethod compressImageWithImage:image size:mySize];