如何将相机/照片库中的图像保存到要在 UICollectionView 中显示的数组中

Posted

技术标签:

【中文标题】如何将相机/照片库中的图像保存到要在 UICollectionView 中显示的数组中【英文标题】:How to save image from camera/photo library into an array that is to be displayed in a UICollectionView 【发布时间】:2016-08-20 01:00:26 【问题描述】:

我意识到这个问题可能有点宽泛,但基本上我想要做的就是使用图像选择器通过使用相机或在照片库中选择照片,并将该照片保存到数组中。我已经知道如何使用资产文件夹中的图像填充集合视图。只是真的如何将用户图像保存到数组中。如何命名每张图片?

此外,如果数组可以是一个全局数组,则更好,这样可以在其他地方访问这些图像。

提前感谢您的帮助。

【问题讨论】:

【参考方案1】:

为什么不简单使用:

var myImages = [UIImage]()

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) 
    if let yourPickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage 
       myImages.append(yourPickedImage)
    
   dismissViewControllerAnimated(true, completion: nil)

编辑:

将图像保存到磁盘:

func saveImage (image: UIImage, path: String ) -> Bool
    let jpgImageData = UIImageJPEGRepresentation(image, 1.0)
    let result = jpgImageData!.writeToFile(path, atomically: true) 
    return result


func getDocumentsURL() -> NSURL 
    let documentsURL = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0]
    return documentsURL


func fileInDocumentsDirectory(filename: String) -> String 
    let fileURL = getDocumentsURL().URLByAppendingPathComponent(filename)
    return fileURL.path!

如何储存

let imagePath = fileInDocumentsDirectory(myImageName)
saveImage(yourPickedImage, path: imagePath)

阅读

func loadImageFromPath(path: String) -> UIImage? 
    let image = UIImage(contentsOfFile: path)
    return image

【讨论】:

真的这么简单哈哈?我不需要使用某种形式的保存数据吗?就像把它写到文件中一样? 没有。如果您只需要将它放入一个数组中(而不是持久化!),那么您只需要它。 我需要保存它,这样当用户回来时,他们的照片就会在那里 所以你应该将图像存储在你的文件系统中,然后将所有的 imagePaths 存储到 NSUserDefaults() 或 CoreData 中。 我该如何进行这个过程?

以上是关于如何将相机/照片库中的图像保存到要在 UICollectionView 中显示的数组中的主要内容,如果未能解决你的问题,请参考以下文章

如何对相机胶卷中的照片进行方形切割?

如何将图像从相机保存到 iPhone 画廊中的特定文件夹?

如何使用具有离子和角度的照片相机在firebase中同时保存多个图像

swift核心数据:保存相机中的图像

仅当它们由相机拍摄而不是从照片库中选择时才将图像保存到照片库

如何在 Swift 3 中保存带有顶部图像的相机照片