如何将图像存储到Realm数据库?

问题描述 投票:4回答:2

我正在使用Swift 2.2编写iOS应用程序,我希望根据调整的图像大小,在Realm数据库中本地保存帐户的个人资料图片。我用谷歌搜索,也看到here但不清楚。如果图像尺寸较小或数量较少,或者如果我有更多图像或大尺寸可以做什么?

另一个困惑是我将使用NSData或NSString?我的模特是

class IndividualContact: Object {

    dynamic var photoDataString = ""
    var photoData: NSData? = nil
    dynamic var isPhotoAvailable = false
}

我已经从画廊中选择了图片

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {

        if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage {

            imageView.contentMode = .ScaleAspectFit
            imageView.image = pickedImage 
        }

现在如何根据调整大小(120 * 110大小)来存储它?

ios swift swift2 realm
2个回答
9
投票

你不能直接将图像保存到Realm,将其转换为NSData并存储它。

如果你的图像是JPEG类型然后使用,

let data = NSData(data: UIImageJPEGRepresentation(yourImage,0.9))

如果您的图像是PNG类型然后使用,

let data = NSData(data: UIImagePNGRepresentation(yourImage))

之后写你的文件就像,

let realm = Realm()
realm.write{
    realm.add(data)
}

希望这可以帮助。


3
投票

你无法直接将image保存到Realm中,将其转换为Data并存储它。

将你的image转换为Data

let data = NSData(data: UIImageJPEGRepresentation(yourImage,0.9))

如果有的话,将数据转换为PNG格式

let imgPNG = UIImage.imageWithData(data)

PNG image转换为Data

let dataPNGImg = NSData(data: UIImagePNGRepresentation(imgPNG))

将数据存储到Realm DB中......

  let realm = Realm()
    realm.write{
        realm.add(dataPNGImg)
    }

将图像存储在数据库中不是一个好主意。它会增加数据库负载和处理时间。您可以存储图像路径而不是图像。

© www.soinside.com 2019 - 2024. All rights reserved.