图片压缩上传
程序员文章站
2022-03-27 19:50:19
...
//根据UserId和当前时间生成图片名
+ (NSString *)getCreateImageNameWithUserId:(NSString *)userId {
if (userId) {
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:TIME_FORMAT];
NSString *dateTime = [formatter stringFromDate:[NSDate date]];
NSString *imageName = [[userId stringByAppendingString:@"_"]stringByAppendingString:dateTime];
return [imageName stringByAppendingFormat:@".jpg"];
} else {
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:TIME_FORMAT];
NSString *dateTime = [formatter stringFromDate:[NSDate date]];
NSString *imageName = dateTime;
return [imageName stringByAppendingFormat:@".jpg"];
}
}
//以事件为图片名字
NSString *imageName = [self getCreateImageNameWithUserId:userId];
//参数:UIImage和压缩系数,其中压缩系数越小,压缩的图片数据量越小
//图片按0.75的质量压缩->转换为NSData
NSData *imageData = UIImageJPEGRepresentation([UIImage imageNamed:imageName] , 0.75);
同样是读取摄像头拍摄的同样景色的照片,通过调用UIImageJPEGRepresentation(UIImage* image, 1.0)读取数据时,返回的数据大小为140KB
但更改压缩系数后,通过调用UIImageJPEGRepresentation(UIImage* image, 0.5)读取数据时,返回的数据大小只有11KB多,大大压缩了图片的数据量
而且从视角角度看,图片的质量并没有明显的降低.因此,在读取图片数据内容时,建议优先使用UIImageJPEGRepresentation,并可 根据自己的实际使用场景,设置压缩系数,进一步降低图片数据量大小.