从NSData以编程方式压缩Iphone中的图像

Shi*_*tty 1 compression iphone image uiimageview nsdata

我希望在将图像存储为NSData对象之前压缩图像.

下面是代码,它可以帮助我获取NSDataImage的对象.

NSURL *referenceURL = [info objectForKey:UIImagePickerControllerReferenceURL];
        ALAssetsLibrary *library1 = [[ALAssetsLibrary alloc] init];
        [library1 assetForURL:referenceURL resultBlock:^(ALAsset *asset)
         {

             int byteArraySize = asset.defaultRepresentation.size;

             NSMutableData* rawData = [[NSMutableData alloc]initWithCapacity:byteArraySize];
             void* bufferPointer = [rawData mutableBytes];

             NSError* error=nil;
             [asset.defaultRepresentation getBytes:bufferPointer fromOffset:0 length:byteArraySize error:&error];
             if (error) {
                 NSLog(@"%@",error);
             }
             rawData = [NSMutableData dataWithBytes:bufferPointer length:byteArraySize];
}
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

Pet*_*ese 6

UIImagePickerController确实返回一个压缩图像,但你也可以使用这个内置的UIKit函数和PNG的相关函数来控制格式和压缩:

NSData* UIImageJPEGRepresentation(UIImage *image, CGFloat compressionQuality);
Run Code Online (Sandbox Code Playgroud)

如果referenceURL返回字符串,则可能需要创建NSURL.

NSImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL: referenceURL]];
NSData *compressedImage = UIImageJPEGRepresentation(image, .1); //.1 is low quality
Run Code Online (Sandbox Code Playgroud)