Ios NSData对图像质量的影响
我使用的是Ios NSData对图像质量的影响,ios,objective-c,uiimage,nsdata,Ios,Objective C,Uiimage,Nsdata,我使用的是UIImage*image=[UIImage-imageWithData:data],但是图像的大小要大四倍。原始数据。长度=100KB,但是这个图像现在有400多KB。你可以说是压缩完成的。但是我在压缩数据后通过以下方法。长度=200 KB 以下是我的方式 压缩法 图像大小超过500 KB data.lenght=100KB 这是图像的数据长度 这是图像的图像 我不知道为什么,但是你可以像这样重新绘制图像: +(NSData *)compressDataWithImage:(UII
UIImage*image=[UIImage-imageWithData:data]
,但是图像的大小要大四倍。原始数据。长度=100KB,但是这个图像现在有400多KB。你可以说是压缩完成的。但是我在压缩数据后通过以下方法。长度=200 KB
以下是我的方式
压缩法
图像大小超过500 KB
data.lenght=100KB
这是图像的数据长度
这是图像的图像
我不知道为什么,但是你可以像这样重新绘制图像:
+(NSData *)compressDataWithImage:(UIImage *)image toMaxFIleSize:(NSInteger)maxFileSize {
UIImage *comImage;
comImage = image;
CGFloat compression = 1.0;
NSData *imageData = UIImageJPEGRepresentation(comImage, compression);
NSData *newData;
while (imageData.length > maxFileSize) {
compression *= 0.5;
newData = UIImageJPEGRepresentation(comImage, compression);
if (newData.length == imageData.length) {
CGSize newSize = CGSizeMake(comImage.size.width * 0.5, comImage.size.height * 0.5);
UIGraphicsBeginImageContext(newSize);
[comImage drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
comImage = UIGraphicsGetImageFromCurrentImageContext();
newData = UIImageJPEGRepresentation(comImage, compression);
}
imageData = newData;
}
return imageData;
}
有没有办法将数据直接放入图像大小和数据长度大小中?您想实现什么?您想做什么?我想得到“data.lenght=100KB”,而不是457KB以上的图片Image@nvNoaDev如果更改图像的大小,则创建了一个新的“新闻大小”。我不想要图像sizeI对不起,这是我唯一知道的方式
- (void)loadPosterImage:(NSString *)imgURL {
weakSelf();
[[SDWebImageDownloader sharedDownloader] downloadImageWithURL:[NSURL URLWithString:imgURL]
options:SDWebImageDownloaderLowPriority
progress:^(NSInteger receivedSize, NSInteger expectedSize) {}
completed:^(UIImage *image, NSData *data, NSError *error, BOOL finished) {
strongSelf();
// image is through [UIImage imageWithData: data]
self.posterImage = image;
self.posterData = data;
}];
}
+(NSData *)compressDataWithImage:(UIImage *)image toMaxFIleSize:(NSInteger)maxFileSize {
UIImage *comImage;
comImage = image;
CGFloat compression = 1.0;
NSData *imageData = UIImageJPEGRepresentation(comImage, compression);
NSData *newData;
while (imageData.length > maxFileSize) {
compression *= 0.5;
newData = UIImageJPEGRepresentation(comImage, compression);
if (newData.length == imageData.length) {
CGSize newSize = CGSizeMake(comImage.size.width * 0.5, comImage.size.height * 0.5);
UIGraphicsBeginImageContext(newSize);
[comImage drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
comImage = UIGraphicsGetImageFromCurrentImageContext();
newData = UIImageJPEGRepresentation(comImage, compression);
}
imageData = newData;
}
return imageData;
}