Así que recientemente cambié mi material de base de datos a ORMLite en mi aplicación para tableta Android que estoy escribiendo. Hasta ahora todo bien, obtuve la mayoría de las cosas refactored/recoded. Aunque tengo problemas con lo que originalmente estaba almacenado en la base de datos como BLOB. En mi modelo de datos original se veía así:ORMLite e imágenes guardadas como BLOB en Android
byte[] imageBytes;
pero no creo que pueda usar que, en ORMLite, mejor que podría decir que tiene que ser una cadena así que ahora tengo:
@DatabaseField
String picture;
Pero ahora, estoy confundido en cuanto a cómo leer y escribir los datos de bits como bytes, etc ... que estaba usando código como este para transportar datos hacia y desde la base de datos:
...
//Set the clients image to what was captured...
Bitmap resized2= android.graphics.Bitmap.createScaledBitmap(thumbnail, thumbnail.getWidth()/2, thumbnail.getHeight()/2, true);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
resized2.compress(Bitmap.CompressFormat.PNG, 100, baos); //bm is the bitmap object
byte[] b = baos.toByteArray();
mClient.setImageBytes(b);
myImage.setImageBitmap(resized2);
//do save to the database of the image to the blob whose column is picture
ContentValues initialValues = new ContentValues();
initialValues.put("picture", mClient.getImageBytes());
String [] strArray = {""+sid};
long n = dbAdapter.updateRecordsInDB("clients", initialValues, "_id=?", strArray);
Así que ahora que es cómo estaba guardando la imagen, no soy su ¿Cómo puedo hacer esto si no hay BLOB en el ORMLite y tengo que usar cadenas?
para la integridad Así es como me gustaría visualizar la imagen:
if(mClient.getImageBytes().length <= 1) //no image in database, thats fine use generic
myImage.setImageResource(R.drawable.sillo); // create a sillouhtette face icon here...
else
myImage.setImageBitmap((BitmapFactory.decodeByteArray(mClient.getImageBytes(),0, (mClient.getImageBytes()).length)));
Entonces, ¿qué tengo que hacer para conseguir estas imágenes dentro y fuera de la base de datos, y es el tipo de campo de cadena correcta para una "Blob"?
Ahh lo tengo, por alguna razón, tomó el renderscript DataType, pero tenía que calificar completamente el nombre y todo estaba bien. ¡Gracias! – Codejoy
+1 Agradable ... me salvó el tiempo –
@Gray ¿sabe cómo configurar el byte [] en el archivo ormlite_config.txt? porque he agregado esta línea al archivo # --field-start-- fieldName = image1 # --field-end-- pero me da una excepción de tiempo de ejecución cuando trato de guardar archivos en db –