从相机胶卷中获取所有图像并将其显示在滚动视图上?
Posted
技术标签:
【中文标题】从相机胶卷中获取所有图像并将其显示在滚动视图上?【英文标题】:get all the images from camera roll and show it on the scroll view? 【发布时间】:2015-12-31 05:31:50 【问题描述】:目前我正在使用 ALasset 库来获取图像,但是当相机胶卷中的图像量很大时,我会遇到内存警告问题。
e.g assetsd died
这是我从相机胶卷中获取图像的代码
[self.assetsGroup enumerateAssetsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:(NSMakeRange(0, self.assetsGroup.numberOfAssets - 1))] options:NSEnumerationReverse usingBlock:^(ALAsset result, NSUInteger index, BOOL stop)
if (result)
UIImage *imageThumbnail;
imageThumbnail = [ImageHelper scaleAndRotateImage:[UIImage imageWithCGImage:[[result defaultRepresentation] fullScreenImage]] maxSize:500];
if(imageThumbnail)
//Do your code here….
];
我如何解决内存警告和资产死亡问题。 我还可以知道具有包含所有相机胶卷图像但滚动显示而不是网格形式的滚动视图的应用程序吗?这样我就可以得到它的参考。
提前致谢。
【问题讨论】:
如果你的目标是 ios8 以后 NS_CLASS_AVAILABLE_IOS(8_0) @interface PHAsset : PHObject 感谢您的建议.. 但我的 iOS 7 应用也兼容.. 我无法使用 PHAsset。 【参考方案1】:我认为您必须使用带有row = self.assetsGroup.numberOfAssets - 1
的集合视图而不是滚动视图,并在集合视图单元格中编写如下代码
[self.assetsGroup enumerateAssetsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:(NSMakeRange(0, indexPath.row))] options:NSEnumerationReverse usingBlock:^(ALAsset result, NSUInteger index, BOOL stop)
if (result)
UIImage *imageThumbnail;
imageThumbnail = [ImageHelper scaleAndRotateImage:[UIImage imageWithCGImage:[[result defaultRepresentation] fullScreenImage]] maxSize:500];
if(imageThumbnail)
//Do your code here….
];
还有一件事,imageThumbnail 大小为几 kb,因此您可以将其存储(在本地目录中或使用 nsdata 在 coredata 中)并且在使用之前 enumerateAssetsAtIndexes 检查图像是否已存储,然后不要调用使用该存储的图像
【讨论】:
谢谢,但我必须全屏显示,所以这几个 kb 不起作用,即使我使用它,我的图像也会失真。 但我认为,当您当时使用网格视图时,您必须只显示缩略图图像,而对于全屏模式,我认为您不需要存储它只需使用 ` [NSIndexSet indexSetWithIndexesInRange:(NSMakeRange( 0, indexPath.row))]` 因为在全屏模式下你一次只需要一张图片以上是关于从相机胶卷中获取所有图像并将其显示在滚动视图上?的主要内容,如果未能解决你的问题,请参考以下文章