//獲得原始圖片的大小
UIImage * image = [UIImage imageNamed:@"qixie"];
NSData * imageData=UIImagePNGRepresentation(image);
NSLog(@"原始圖片的大小---->%lu",[imageData length]);
//第一個(gè)參數(shù)為分辨率 ,第二個(gè)參數(shù)為限制圖片的大小
NSData * imgData = [self reSizeImageData:image maxImageSize:1024 maxSizeWithKB:200];
/**
* 調(diào)整圖片尺寸和大小
*
* @param sourceImage 原始圖片
* @param maxImageSize 新圖片最大尺寸
* @param maxSize 新圖片最大存儲(chǔ)大小
*
* @return 新圖片imageData
*/
- (NSData *)reSizeImageData:(UIImage *)sourceImage maxImageSize:(CGFloat)maxImageSize maxSizeWithKB:(CGFloat) maxSize
{
//當(dāng)沒有進(jìn)行設(shè)置數(shù)值的時(shí)候,初始化默認(rèn)的分辨率和最大壓縮后的大小
if (maxSize <= 0.0)
{
maxSize = 1024;
}
if (maxImageSize <= 0.0)
{
maxImageSize = 200;
}
//先調(diào)整分辨率
CGSize newSize = CGSizeMake(sourceImage.size.width, sourceImage.size.height);
CGFloat tempHeight = newSize.height / maxImageSize;
CGFloat tempWidth = newSize.width / maxImageSize;
if (tempWidth > 1.0 && tempWidth > tempHeight) {
newSize = CGSizeMake(sourceImage.size.width / tempWidth, sourceImage.size.height / tempWidth);
}
else if (tempHeight > 1.0 && tempWidth < tempHeight){
newSize = CGSizeMake(sourceImage.size.width / tempHeight, sourceImage.size.height / tempHeight);
}
UIGraphicsBeginImageContext(newSize);
[sourceImage drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
//調(diào)整大小
NSData *imageData = UIImageJPEGRepresentation(newImage,1.0);
CGFloat sizeOriginKB = imageData.length / 1024.0;
CGFloat resizeRate = 0.9;
while (sizeOriginKB > maxSize && resizeRate > 0.1) {
imageData = UIImageJPEGRepresentation(newImage,resizeRate);
sizeOriginKB = imageData.length / 1024.0;
resizeRate -= 0.1;
}
NSLog(@"圖片的大小-----%lu",(unsigned long)imageData.length);
return imageData;
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。