将文件路径保存到 realm.io 并使用 AlamofireImage 分配图像

Posted

技术标签:

【中文标题】将文件路径保存到 realm.io 并使用 AlamofireImage 分配图像【英文标题】:Save file path to realm.io and assign image with AlamofireImage 【发布时间】:2015-10-15 11:39:01 【问题描述】:

我有一个视图控制器,它拍摄一张照片,然后转到第二个视图控制器来预览捕获的图像。 那么问题来了,如何使用 alamofireimage 将我的图像分配给我的 imageview? 这是我收到的路径

assets-library://asset/asset.JPG?id=16F4079E-38B2-4B7C-953A-22395A528B5D&ext=JPG

谁能建议我如何使用它?

我的代码如下

let imageData = UIImageJPEGRepresentation(self.image!, 0.8)
    let compressedImage = UIImage(data: imageData!)
    ALAssetsLibrary().writeImageToSavedPhotosAlbum(compressedImage?.CGImage, orientation: ALAssetOrientation(rawValue: compressedImage!.imageOrientation.rawValue)!, completionBlock: 
        (path:NSURL!, error:NSError!) -> Void in
        print("\(path)")

        self.previewImageView.af_setImageWithURL(path)

    )

预览控制器不在模拟中。但是snapping后要segue,确认后返回collectionview控制器

【问题讨论】:

【参考方案1】:

AlamofireImage 其方法setImageWithURL 用于从服务器异步加载图像。但是你有资产 URL,哪个图像已经存储在你的设备中,所以不要使用上面的 AlamofireImage 方法。

使用以下代码从 ALAsset URL 加载图像:

let imageData = UIImageJPEGRepresentation(self.image!, 0.8)
    let compressedImage = UIImage(data: imageData!)
    ALAssetsLibrary().writeImageToSavedPhotosAlbum(compressedImage?.CGImage, orientation: ALAssetOrientation(rawValue: compressedImage!.imageOrientation.rawValue)!, completionBlock: 
        (path:NSURL!, error:NSError!) -> Void in
        print("\(path)")

          assetLibrary.assetForURL(path, resultBlock:  (asset: ALAsset!) -> Void in  
                        if asset != nil 
                             var assetRep: ALAssetRepresentation = asset.defaultRepresentation()
                             var iref = assetRep.fullScreenImage().takeUnretainedValue()
                             var image =  UIImage(CGImage: iref)
                             self.previewImageView.image = image     
                         

                      , failureBlock:  (error: NSError!) -> Void in
                                println(error.localizedDescription)
                   )

    )

【讨论】:

如果为了一致性我更喜欢使用 AlamofireImage 怎么办?因为在我的集合视图控制器中,我使用 AlamofireImage 将图像加载到集合项目中 您不想在这种特殊情况下使用 AlamofireImage 的 UIImageView 扩展。相反,请遵循@Kirit 的建议,直接使用 UIImageView 。 AlamofireImage UIImageView 扩展旨在与远程图像交互,而不是与本地图像交互。 AlamofireImage 的所有其他部分仍然很有用,但我会避免以这种方式使用 UIImageView 扩展。

以上是关于将文件路径保存到 realm.io 并使用 AlamofireImage 分配图像的主要内容,如果未能解决你的问题,请参考以下文章

使用 Alamofire 将文件保存到 .DocumentDirectory

一起使用 Realm.io 和 RestKit 时的属性数据类型

我的上传文件脚本如何将文件路径保存到数据库,返回错误消息并创建文件夹?

如何将文件保存在路径中并使用 ../../ 从不同的路径 PHP 访问它

Excel VBA 将工作表保存到路径作为 Excel 文件并覆盖文件

将XML字符串写入到XML文件并保存到指定路径