如何从ALAsset保存压缩的JPEG

时间:2012-04-12 10:04:58

标签: ios

我有从ALAssetLibrary检索到的对象ALAsset我想推断压缩JPEG以便将其发送到Web服务。

任何建议从哪里开始?

编辑: 我找到了一种从ALAsset中获取NSData的方法

ALAssetRepresentation *rappresentation = [asset defaultRepresentation];
Byte *buffer = (Byte*)malloc(rappresentation.size);
NSUInteger buffered = [rappresentation getBytes:buffer fromOffset:0.0 length:rappresentation.size error:&err];

但我找不到通过调整大小和压缩来缩小图像大小的方法。 我的想法是拥有类似的东西:

UIImage *myImage = [UIImage imageWithData:data];
//resize image
NSData *compressedData = UIImageJPEGRepresentation(myImage, 0.5);

但是,首先,即使没有调整大小,只需使用这两行代码,compressedData就比数据大。 第二,我不确定调整UIImage的最佳方法是什么

2 个答案:

答案 0 :(得分:0)

您可以使用

[theAsset thumbnail]

或者

压缩可能会在某些点后产生更大的文件,您需要调整图像大小:

+ (UIImage *)imageWithCGImage:(CGImageRef)cgImage scale:(CGFloat)scale orientation:(UIImageOrientation)orientation

答案 1 :(得分:0)

ALAssetRepresentation

获取CGImage很容易
ALAssetRepresentation repr = [asset defaultRepresentation];
// use the asset representation's orientation and scale in order to set the UIImage
// up correctly
UIImage *image = [UIImage imageWithCGImage:[repr fullResolutionImage] scale:[repr scale] orientation:[repr orientation]];
// then do whatever you want with the UIImage instance