欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

图片压缩上传

程序员文章站 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,并可 根据自己的实际使用场景,设置压缩系数,进一步降低图片数据量大小.