尝试将超高清图像保存在图库中的文档目录中。由于内存压力,我的应用程序崩溃了。如何在不进入uiimage的情况下,直接从alaset中保存图片到documents文件夹。
最佳答案
如果你的内存力有问题,我建议你阅读这篇 How can I release memory of UIImages no longer used首先。
如果您决定仍然需要在不使用 UIImage 的情况下进行复制,您可以尝试以下操作
ALAsset *result; // do not forget to initialize it
ALAssetRepresentation *rawImage = [result defaultRepresentation];
uint8_t *buffer = malloc( rawImage.size );
[rawImage getBytes:buffer fromOffset:0 length:rawImage.size error:NULL];
NSData *d = [NSData dataWithBytes:buffer length:rawImage.size];
[d writeToFile:@"your_file_path_here" atomically:YES];
free(buffer);
更新:
下面的代码可能会更高效
long long sizeOfRawDataInBytes = rawImage.size;
NSMutableData* rawData = [[NSMutableData alloc]initWithCapacity:sizeOfRawDataInBytes];
void* bufferPointer = [rawData mutableBytes];
NSError* error=nil;
[rawImage getBytes:bufferPointer fromOffset:0 length:sizeOfRawDataInBytes error:&error];
if (error) {
NSLog(@"Getting bytes failed with error: %@",error);
}
else {
[rawData writeToFile: @"your_file_path_here" atomically:YES];
}
关于ios - 如何将高清图像从 alasset 保存到 ios 中的文档文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22680296/