我的情况是,我正在将照片集照片加载到水平集合视图单元Imageview中。为了快速加载图像,我给出了PHImagemanager
targetSize: CGSize(width: 120.0, height: 120.0)
。现在,一旦用户在水平CollectionView中倾斜了单元格,就需要获取PHImageManagerMaximumSize实际高质量的照片作为预览图像。如何实现?
cell.tag = Int(manager.requestImage(for: asset,
targetSize: CGSize(width: 120.0, height: 120.0), //PHImageManagerMaximumSize
contentMode: .aspectFill,
options: option) { (result, _) in
cell.picImage?.image = result
})
// MARK: - UICollectionViewDelegate protocol
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let selectedCell = collectionView.cellForItem(at: indexPath) as! GalleryCollectionViewCell
previewImage.image = selectedCell.picImage.image // here I need to get full size exact image (not cropped image)
}
答案 0 :(得分:1)
您应该保存2张图像。首先是完整的原始图像,其次是裁剪的图像。
首先:当用户选择图像时,将原始图像保存到磁盘(具有高宽比并注意图像尺寸的裁剪图像),然后再次裁剪相同的图像(120x120)并保存磁盘。
并在单元可见时从磁盘读取到内存。
小心!如果图片太大,则您的内存使用量会增加太多,并且操作系统将使您的应用崩溃,因此请不要在内存中保留过多的图片
您可以为可见的细胞计数设置缓冲图像。
如果用户选择单元格,则可以显示原始图像