Quiero guardar la imagen en Realm pero dice que el binario es demasiado grande. Sé que NSData debería tener menos de 16 MB. Entonces, ¿cómo puedo manejar este problema? De todos modos para cambiar el tamaño de NSData?
Respuestas
0 para la respuesta № 1Puede hacer referencia a partes del archivo con NSFileHandle
y es offsetInFile
método. p.ej. en trozos de 16 MB.
0 para la respuesta № 2
También tuve el mismo problema, investigando solucioné mi error con la ayuda de Realm docs. Aqui esta el link. https://realm.io/docs/tutorials/scanner/#overview.
El fragmento de código útil:
func data() -> Data {
var imageData = UIImagePNGRepresentation(self)
// Resize the image if it exceeds the 2MB API limit
if (imageData?.count)! > 2097152 {
let oldSize = self.size
let newSize = CGSize(width: 800, height: oldSize.height / oldSize.width *
800)
let newImage = self.resizeImage(self, size: newSize)
imageData = UIImageJPEGRepresentation(newImage, 0.7)
}
return imageData!
}
Para agregar a Realm, un código puede ser algo como esto:
@IBOutlet weak var thumbImg: UIImageView!
let picture = Image()
let imageDownSizing = thumbImg.image?.data()
//thumbImg.image is of type UIImage type, so convert UIImage -> Data.
//picture.image is of type Data.
picture.image = UIImagePNGRepresentation(thumbImg.image!)
picture.image = imageDownSizing
let item = Item()
item.toImage = picture
do{
let realm = try! Realm()
try realm.write {
realm.add(item)
}
}catch{
print("Error saving context (error)")
}