ios - 如何将高清图像从 alasset 保存到 ios 中的文档文件夹

标签 ios iphone ipad uiimage save

尝试将超高清图像保存在图库中的文档目录中。由于内存压力,我的应用程序崩溃了。如何在不进入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/

相关文章:

ios - 应用程序的后端是如何创建的?还有前端是怎么设计的?它是否像 wap 网站一样完成并链接到 Xcode?

ios - 未保存 Transient 属性的 setPrimitiveValue

iphone - iPhone Mac/Windows 的 Web 开发要求?

iphone - uitableview reloadRowsAtIndexPaths 不工作

ios - Objective-C 在没有相机界面的情况下拍摄照片的简单方法。只需从相机中获取照片并保存到文件中

ios - 具有 UIWebView 或自定义 View Controller 的 iPad 应用程序

当 PMCalendar 点击或打开时,ios swift 关闭键盘

ios - 进度开始后是否可以动态扩展 NSProgress 层次结构?

javascript - Bootstrap Modal 在 iPad 中消失

ios - 在 UIImageView 动画上停止 Alpha 混合