【iOS开发】---- 快速将大图保存到本地
来源:互联网 发布:three.js 全景图 编辑:程序博客网 时间:2024/05/21 22:51
碰到一个问题:如何快速的批量保存iphone相册中的图片(原始的大图,分辨率高)到本地?
保存图片到本地,首先得拿到这个图片:alAsset.defaultRepresentation.fullResolutionImage.但是图片太大了,大批量的保存取这个图片就得花很长的时间,再转NSData存入本地又得很久,所以这种读写方式是不行的。
我google了一下,在stack overflow找到了方法:点击打开链接 。
我把实现的方法贴一下(包括大图和缩略图):
//reading out the orginal images for (int j=0; j<[assetArray count]; j++) { ALAssetRepresentation *representation = [[assetArray objectAtIndex:j] defaultRepresentation]; NSString* filename = [documentPath stringByAppendingPathComponent:[representation filename]]; [[NSFileManager defaultManager] createFileAtPath:filename contents:nil attributes:nil]; NSOutputStream *outPutStream = [NSOutputStream outputStreamToFileAtPath:filename append:YES]; [outPutStream open]; long long offset = 0; long long bytesRead = 0; NSError *error; uint8_t * buffer = malloc(131072); while (offset<[representation size] && [outPutStream hasSpaceAvailable]) { bytesRead = [representation getBytes:buffer fromOffset:offset length:131072 error:&error]; [outPutStream write:buffer maxLength:bytesRead]; offset = offset+bytesRead; } [outPutStream close]; free(buffer);}//reading out the fullScreenImages and thumbnailsfor (int j=0; j<[assetArray count]; j++) { @autoreleasepool { ALAsset *asset = [assetArray objectAtIndex:j]; NSString *orgFilename = [representation filename]; NSString *filenameFullScreen = [NSString stringWithFormat:@"%@_fullscreen.png",[orgFilename stringByDeletingPathExtension]] NSString* pathFullScreen = [documentPath stringByAppendingPathComponent:filenameFullScreen]; CGImageRef imageRefFullScreen = [[asset defaultRepresentation] fullScreenImage]; UIImage *imageFullScreen = [UIImage imageWithCGImage:imageRefFullScreen]; NSData *imageDataFullScreen = UIImagePNGRepresentation(imageFullScreen); [imageDataFullScreen writeToFile:pathFullScreen atomically:YES]; NSString *filenameThumb = [NSString stringWithFormat:@"%@_thumb.png",[orgFilename stringByDeletingPathExtension]] NSString* pathThumb = [documentPath stringByAppendingPathComponent:filenameThumb]; CGImageRef imageRefThumb = [asset thumbnail]; UIImage *imageThumb = [UIImage imageWithCGImage:imageRefThumb]; NSData *imageDataThumb = UIImagePNGRepresentation(imageThumb); [imageDataThumb writeToFile:pathThumb atomically:YES]; }}
参考:http://stackoverflow.com/questions/9973259/what-is-the-correct-way-to-import-save-photos-from-iphone-album
- 【iOS开发】---- 快速将大图保存到本地
- iOS开发:将图片存到本地
- IOS将ALAsset对象中数据保存到本地文件夹
- iOS 将图片保存到iPhone本地相册
- 将PrivateKey保存到本地
- 将log保存到本地
- 将图片保存到本地
- 大图片压缩后,保存小图片到本地
- IOS保存图片到本地
- iOS开发将数据保存到内存中
- Kindeditor快速上手2—将图片附件保存到本地磁盘
- iOS开发截屏并保存图片到本地相册以及长按保存图片到本地
- FP10直接将图片保存到本地
- 将项目中的资源保存到本地
- mysql 将远程数据保存到本地
- MSSQLServer将远端数据库保存到本地
- C# 将二进制字符串保存到本地
- 将网络图片保存到本地
- 页面上2个按钮,当提交表单的时候调用不同的方法,但是都需要把页面上面的查询条件提交给action
- ERROR: ORA-28002: the password will expire within 7 days 解决办法
- OnScrollListener简介
- PathEffect 路径特效
- 预写式日志
- 【iOS开发】---- 快速将大图保存到本地
- ad9960
- 电子版药丸,监控你的健康
- Windchill中获得自定义类型并且返回类型对象
- 另辟蹊径之--解决Jasperreport的web打印的一种另类方法
- <DataStructure_1>用栈实现四则运算(c语言)
- iOS学习笔记总结整理
- 顺序串的实现
- 超链分析和PageRank