在Iphone上有两种读取图片数据的简单方法: UIImageJPEGRepresentation和UIImagePNGRepresentation. (UIImage* image) 要比UIImageJPEGRepresentation(UIImage* image, 1.0) 返回的图片数据量大很多.譬如,同样是读取摄像头拍摄的同样景色的照片, UIImagePNGRepresentation()返回的数据量大小为199K ,而 UIImageJPEGRepresentation(UIImage* image, 1.0)返回的数据量大小只为140KB ,比前者少了50多KB.如果对图片的清晰度要求不高,还可以通过设置 UIImageJPEGRepresentation函数的第二个参数,大幅度降低图片数据量.譬如,刚才拍摄的图片, 通过调用UIImageJPEGRepresentation (UIImage* image, 1.0)读取数据时,返回的数据大小为140KB,但更改压缩系数后,通过调用UIImageJPEGRepresentation(UIImage* image, 0.5)
** 在Iphone上有两种读取图片数据的简单方法 **UIImageJPEGRepresentation和UIImagePNGRepresentation.** UIImageJPEGRepresentation UIImagePNGRepresentation(UIImage \*image) 要比UIImageJPEGRepresentation(UIImage* image, 1.0) 返回的图片数据量大很多 140K,比前者少了59K 如果对图片的清晰度要求不是极高,建议使用UIImageJPEGRepresentation ,可以大幅度降低图片数据量.比如,刚才拍摄的图片,通过调用 UIImageJPEGRepresentation 因此, 在读取图片数据内容时,建议优先使用UIImageJPEGRepresentation, 并可根据自己的实际使用场景,设置压缩系数,进一步降低图片数据量大小。 data = UIImageJPEGRepresentation(image, 1); } return data; } #缩 是指文件的尺寸变小,也就是像素数减少,而长宽尺寸变小
压缩图片质量 NSData *data = UIImageJPEGRepresentation(image, compression);UIImage *resultImage = [UIImage imageWithData UIImageJPEGRepresentation:: 第二个参数 compression 取值 0.0~1.0,值越小表示图片质量越低,图片文件自然越小。 image, compression); while (data.length > maxLength && compression > 0) { compression -= 0.02; data = UIImageJPEGRepresentation ; resultImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); data = UIImageJPEGRepresentation image toByte:(NSUInteger)maxLength { // Compress by quality CGFloat compression = 1; NSData *data = UIImageJPEGRepresentation
二、图片压缩的实现 2.1 “压”处理 对于“压”的功能,我们一般是使用系统提供的UIImageJPEGRepresentation或UIImagePNGRepresentation方法实现,如: (UIImage *image, CGFloat compressionQuality); //UIImageJPEGRepresentation需要传两个参数, //第一个参数是图片对象 //第二个参数是压的系数 ,其值范围为0~1 NSData *imgData=UIImageJPEGRepresentation(image, 0.5); //UIImagePNGRepresentation只需要传一个参数, 同样的一张照片, 使用UIImagePNGRepresentation(image)返回的数据量大小为199K,而UIImageJPEGRepresentation(image, 1.0)返回的数据量大小只为 如果对图片的清晰度要求不是极高,建议使用UIImageJPEGRepresentation,可以大幅度降低图片数据量.其中UIImageJPEGRepresentation(UIImage *image
:(NSUInteger)maxLength { // Compress by quality CGFloat compression = 1; NSData *data = UIImageJPEGRepresentation CGFloat min = 0; for (int i = 0; i < 6; ++i) { compression = (max + min) / 2; data = UIImageJPEGRepresentation = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); data = UIImageJPEGRepresentation
只需要图片引用作为参数.通过在实际使用过程中,比较发现: UIImagePNGRepresentation(UIImage* image) 要比UIImageJPEGRepresentation(UIImage (UIImage* image, 1.0)返回的数据量大小只为140KB,比前者少了50多KB.如果对图片的清晰度要求不高,还可以通过设置 UIImageJPEGRepresentation函数的第二个参数 ,大幅度降低图片数据量.譬如,刚才拍摄的图片, 通过调用UIImageJPEGRepresentation(UIImage* image, 1.0)读取数据时,返回的数据大小为140KB,但更改压缩系数后 ,通过调用UIImageJPEGRepresentation(UIImage* image, 0.5)读取数据时,返回的数据大小只有11KB多,大大压缩了图片的数据量 ,而且从视角角度看,图片的质量并没有明显的降低 .因此,在读取图片数据内容时,建议优先使用UIImageJPEGRepresentation,并可根据自己的实际使用场景,设置压缩系数,进一步降低图片数据量大小. 1.4 图片缩放 图片缩放的三个函数
document - (void)saveImage:(UIImage *)tempImage WithName:(NSString *)imageName { NSData * imageData = UIImageJPEGRepresentation document - (void)saveImage:(UIImage *)tempImage WithName:(NSString *)imageName { NSData * imageData = UIImageJPEGRepresentation
NSData *data; if (UIImagePNGRepresentation(image) == nil) { data = UIImageJPEGRepresentation image = [UIImage imageWithContentsOfFile:filePath]; // NSData * imageData = UIImageJPEGRepresentation
只需要图片引用作为参数.通过在实际使用过程中,比较发现:UIImagePNGRepresentation(UIImage* image) 要比UIImageJPEGRepresentation(UIImage (UIImage* image, 1.0)返回的数据量大小只为140KB,比前者少了50多KB.如果对图片的清晰度要求不高,还可以通过设置 UIImageJPEGRepresentation函数的第二个参数 ,大幅度降低图片数据量.譬如,刚才拍摄的图片, 通过调用UIImageJPEGRepresentation(UIImage*image, 1.0)读取数据时,返回的数据大小为140KB,但更改压缩系数后 ,通过调用UIImageJPEGRepresentation(UIImage* image, 0.5)读取数据时,返回的数据大小只有11KB多,大大压缩了图片的数据量 ,而且从视角角度看,图片的质量并没有明显的降低 .因此,在读取图片数据内容时,建议优先使用UIImageJPEGRepresentation,并可根据自己的实际使用场景,设置压缩系数,进一步降低图片数据量大小. 1.4 图片缩放 图片缩放的三个函数
UIGraphicsEndImageContext(); return endImage; } 法二 .也可以使用系统自带的方法,对图片进行降噪: NSData *data=UIImageJPEGRepresentation
lowercaseString] isEqualToString:@"jpg"] || [[extension lowercaseString] isEqualToString:@"jpeg"]) { [UIImageJPEGRepresentation
} ///压缩JPG static func imageCompressJPG(_ sourceImage:UIImage)->Data{ return UIImageJPEGRepresentation UIImageJPEGRepresentation(newImage, 0.7)!.
drawInRect:rect]; UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); NSData *imageData = UIImageJPEGRepresentation
for (int i = 0; i<images.count; i++) { NSData* imageData = UIImageJPEGRepresentation andParams:(id)params andImage:(UIImage*)image andBack:(CallBack)callback{ NSData* imageData = UIImageJPEGRepresentation
NSString *path = [self imagePathForKey:key]; //从图片提取JPEG格式的数据,第二个参数为图片压缩参数 NSData *data = UIImageJPEGRepresentation self, nil, nil); //压缩图片,如果图片要上传到服务器或者网络,则需要执行该步骤(压缩),第二个参数是压缩比例,转化为NSData类型; NSData *fileData = UIImageJPEGRepresentation
fileDel:imgPath1]; } } float kCompressionQuality = 0.5; NSData *imageData = UIImageJPEGRepresentation 以文件流的格式 for (UploadImageModel *imageModel in imageModelArr) { NSData *imageData = UIImageJPEGRepresentation 总结:上传图片逻辑整理 AFNetwork 压缩转换:UIImage实例对象通过UIImageJPEGRepresentation压缩转换为NSData,下面称之为imageData。 HYBNetworking 压缩转换:UIImage实例对象通过UIImageJPEGRepresentation压缩转换为NSData,下面称之为imageData。 XMNetworking 压缩转换:UIImage实例对象通过UIImageJPEGRepresentation压缩转换为NSData,下面称之为imageData。
lowercaseString] isEqualToString:@"jpg"] || [[extension lowercaseString] isEqualToString:@"jpeg"]) { [UIImageJPEGRepresentation
createNonInterpolatedUIImageFormCIImage:outputImage withSize:imageViewWidth]; } 1.2 UIImage转base64 NSData *scaledImageData = UIImageJPEGRepresentation
{ NSString *urlstring=self.urlTextField.text; //NSString *poststr=@""; NSData *imgData=UIImageJPEGRepresentation
NSData *data = UIImagePNGRepresentation([UIImage imageNamed:@"voiceChange"]); // NSData *data1 = UIImageJPEGRepresentation