Siéntete en la libertad de divulgar nuestros post y códigos con tus amigos, apóyanos para ampliar nuestra comunidad.
Solución:
Aquí el código que usé para mi aplicación.
Este código tomará una imagen de la URL y la convertirá en un byte array
byte[] logoImage = getLogoImage(IMAGEURL);
private byte[] getLogoImage(String url)
try
URL imageUrl = new URL(url);
URLConnection ucon = imageUrl.openConnection();
InputStream is = ucon.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
ByteArrayBuffer baf = new ByteArrayBuffer(500);
int current = 0;
while ((current = bis.read()) != -1)
baf.append((byte) current);
return baf.toByteArray();
catch (Exception e)
Log.d("ImageManager", "Error: " + e.toString());
return null;
Para guardar la imagen en db usé este código.
public void insertUser()
SQLiteDatabase db = dbHelper.getWritableDatabase();
String delSql = "DELETE FROM ACCOUNTS";
SQLiteStatement delStmt = db.compileStatement(delSql);
delStmt.execute();
String sql = "INSERT INTO ACCOUNTS (account_id,account_name,account_image) VALUES(?,?,?)";
SQLiteStatement insertStmt = db.compileStatement(sql);
insertStmt.clearBindings();
insertStmt.bindString(1, Integer.toString(this.accId));
insertStmt.bindString(2,this.accName);
insertStmt.bindBlob(3, this.accImage);
insertStmt.executeInsert();
db.close();
Para recuperar la imagen, este es el código que usé.
public Account getCurrentAccount()
SQLiteDatabase db = dbHelper.getWritableDatabase();
String sql = "SELECT * FROM ACCOUNTS";
Cursor cursor = db.rawQuery(sql, new String[] );
if(cursor.moveToFirst())
this.accId = cursor.getInt(0);
this.accName = cursor.getString(1);
this.accImage = cursor.getBlob(2);
if (cursor != null && !cursor.isClosed())
cursor.close();
db.close();
if(cursor.getCount() == 0)
return null;
else
return this;
Finalmente, para cargar esta imagen en una vista de imagen
logoImage.setImageBitmap(BitmapFactory.decodeByteArray( currentAccount.accImage,
0,currentAccount.accImage.length));
en la clase auxiliar DBAdaper, es decir, la base de datos, declare la tabla de esta manera
private static final String USERDETAILS=
"create table userdetails(usersno integer primary key autoincrement,userid text not null ,username text not null,password text not null,photo BLOB,visibility text not null);";
inserte los valores como este,
primero convertir las imágenes como byte[]
ByteArrayOutputStream baos = new ByteArrayOutputStream();
Bitmap bitmap = ((BitmapDrawable)getResources().getDrawable(R.drawable.common)).getBitmap();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
byte[] photo = baos.toByteArray();
db.insertUserDetails(value1,value2, value3, photo,value2);
en la clase DEAdaper
public long insertUserDetails(String uname,String userid, String pass, byte[] photo,String visibility)
ContentValues initialValues = new ContentValues();
initialValues.put("username", uname);
initialValues.put("userid",userid);
initialValues.put("password", pass);
initialValues.put("photo",photo);
initialValues.put("visibility",visibility);
return db.insert("userdetails", null, initialValues);
recuperar la imagen de la siguiente manera
Cursor cur=your query;
while(cur.moveToNext())
byte[] photo=cur.getBlob(index of blob cloumn);
convertir el byte[] en la imagen
ByteArrayInputStream imageStream = new ByteArrayInputStream(photo);
Bitmap theImage= BitmapFactory.decodeStream(imageStream);
Creo que este contenido puede resolver tu problema.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)