图片压缩的两种形式(压缩到指定尺寸和压缩到指定大小)
2017-03-07 11:29
543 查看
转自:http://blog.csdn.net/dkq972958298/article/details/52750741
iOS中,我们为了节省内存,需要对图片来进行处理,来优化程序,提高程序的效率,下面是一个根据自己的要求来重新设置图片的大小:
一、压缩图片有两种方式,第一种是压缩图片的大小,重新生成图片的尺寸:如下
(1)
[html]view
plain copy
print?
/**
* 压缩图片到指定尺寸大小
*
* @param image 原始图片
* @param size 目标大小
*
* @return 生成图片
*/
-(UIImage *)compressOriginalImage:(UIImage *)image toSize:(CGSize)size{
UIImage * resultImage = image;
UIGraphicsBeginImageContext(size);
[resultImage drawInRect:CGRectMake(00, 0, size.width, size.height)];
UIGraphicsEndImageContext();
return image;
}
(2)
[html]view
plain copy
print?
/**
* 压缩图片到指定尺寸大小
*
* @param img 原始图片
* @param sizeKB 目标大小kb
*
* @return 生成图片
*/
-(UIImage *)drawImgWithOriangeImg:(UIImage *)img withMaxSize:(NSInteger)sizeKB{
UIImage *image = img;
UIImage *destImg = image;
NSData *imgData =
UIImagePNGRepresentation(image);
NSInteger imgSize = [imgData
length]/1000;
NSLog(@"原图片尺寸:%ldKB",imgSize);
if (imgSize > sizeKB *1000) {
NSInteger ratio =
ceil(((double)imgSize)/(sizeKB *1000));
CGSize newSize =
CGSizeMake(image.size.width/ratio, image.size.height/ratio);
UIGraphicsBeginImageContext(newSize);
[image
drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
destImg =
UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
}
return destImg;
}
二、第二种是修改图片的文件大小:如下
[html]view
plain copy
print?
/**
* 压缩图片到指定文件大小
*
* @param image 目标图片
* @param size 目标大小(最大值)
*
* @return 返回的图片文件
*/
- (NSData *)compressOriginalImage:(UIImage *)image toMaxDataSizeKBytes:(CGFloat)size{
NSData * data = UIImageJPEGRepresentation(image, 1.0);
CGFloat dataKBytes = data.length/1000.0;
CGFloat maxQuality = 0.9f;
CGFloat lastData = dataKBytes;
while (dataKBytes > size && maxQuality > 0.01f) {
maxQuality = maxQuality - 0.01f;
data = UIImageJPEGRepresentation(image, maxQuality);
dataKBytes = data.length / 1000.0;
if (lastData == dataKBytes) {
break;
}else{
lastData = dataKBytes;
}
}
return data;
}
这是压缩图片的两种方式。
iOS中,我们为了节省内存,需要对图片来进行处理,来优化程序,提高程序的效率,下面是一个根据自己的要求来重新设置图片的大小:
一、压缩图片有两种方式,第一种是压缩图片的大小,重新生成图片的尺寸:如下
(1)
[html]view
plain copy
print?
/**
* 压缩图片到指定尺寸大小
*
* @param image 原始图片
* @param size 目标大小
*
* @return 生成图片
*/
-(UIImage *)compressOriginalImage:(UIImage *)image toSize:(CGSize)size{
UIImage * resultImage = image;
UIGraphicsBeginImageContext(size);
[resultImage drawInRect:CGRectMake(00, 0, size.width, size.height)];
UIGraphicsEndImageContext();
return image;
}
(2)
[html]view
plain copy
print?
/**
* 压缩图片到指定尺寸大小
*
* @param img 原始图片
* @param sizeKB 目标大小kb
*
* @return 生成图片
*/
-(UIImage *)drawImgWithOriangeImg:(UIImage *)img withMaxSize:(NSInteger)sizeKB{
UIImage *image = img;
UIImage *destImg = image;
NSData *imgData =
UIImagePNGRepresentation(image);
NSInteger imgSize = [imgData
length]/1000;
NSLog(@"原图片尺寸:%ldKB",imgSize);
if (imgSize > sizeKB *1000) {
NSInteger ratio =
ceil(((double)imgSize)/(sizeKB *1000));
CGSize newSize =
CGSizeMake(image.size.width/ratio, image.size.height/ratio);
UIGraphicsBeginImageContext(newSize);
[image
drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
destImg =
UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
}
return destImg;
}
二、第二种是修改图片的文件大小:如下
[html]view
plain copy
print?
/**
* 压缩图片到指定文件大小
*
* @param image 目标图片
* @param size 目标大小(最大值)
*
* @return 返回的图片文件
*/
- (NSData *)compressOriginalImage:(UIImage *)image toMaxDataSizeKBytes:(CGFloat)size{
NSData * data = UIImageJPEGRepresentation(image, 1.0);
CGFloat dataKBytes = data.length/1000.0;
CGFloat maxQuality = 0.9f;
CGFloat lastData = dataKBytes;
while (dataKBytes > size && maxQuality > 0.01f) {
maxQuality = maxQuality - 0.01f;
data = UIImageJPEGRepresentation(image, maxQuality);
dataKBytes = data.length / 1000.0;
if (lastData == dataKBytes) {
break;
}else{
lastData = dataKBytes;
}
}
return data;
}
这是压缩图片的两种方式。
相关文章推荐
- 在线图片压缩后以ImageIO 流的形式 设置大小显示指定页面
- iOS开发之image图片压缩及压缩成指定大小的两种方法
- 图片压缩到指定尺寸和大小
- swift如何压缩图片到指定大小以内,尺寸和体积双压缩
- bitmap 将图片压缩到指定的大小
- 图片超过指定大小后等比例压缩图片
- 图片压缩——压尺寸、压大小
- [Android算法] bitmap 将图片压缩到指定的大小
- 截图、生成指定大小的图片、压缩图片
- [Android算法] bitmap 将图片压缩到指定的大小
- UIImage图片缩放到指定大小尺寸
- android压缩图片到指定尺寸
- Android应用开发之图片(Bitmap)压缩(一)---------Bitmap与BitmapFactory的认识及图片的存储形式大小的实验
- ios-->截图、生成指定大小图片以及压缩
- 【问题帖】压缩图片大小至指定Kb以下
- 将图片缩放成指定大小(压缩方法)
- bitmap 将图片压缩到指定的大小 JAVA
- ios uiimage图片缩放到指定大小尺寸
- 压缩图片到指定大小
- android将图片压缩到指定的大小