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];