Cómo guardar imágenes en la base de datos

Me gustaría saber si hay una forma de guardar Imágenes (del tipo .gif) en la base de datos sqllite. En caso afirmativo, ¿cómo debería ser mi DatabaseAdapter ?

¿También hay un problema de rendimiento?

Deberías usar BLOB en tu base de datos:

Mira este tutorial …

Pero creo que deberías descargar y almacenar imágenes en HashMap, lo que hará que sea más simple.

Código:

Esquivar

 Map hh = new HashMap(); String hi = "http://sofes.miximages.com/android/TLjuP.jpg"; byte[] logoImagedata = getLogoImage(hi); hh.put("img",logoImagedata); 

Recuperando

 byte[] imageByteArray = hh.get("img"); ByteArrayInputStream imageStream = new ByteArrayInputStream(imageByteArray); Bitmap theImage= BitmapFactory.decodeStream(imageStream); 

getLogoImage ()

 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; } } 

Espero que te ayude

No hay nada especial en almacenar imágenes en SQLite. Solo crea una tabla con el tipo de registro BLOB y haz algo así como:

 protected long saveBitmap(SQLiteDatabase database, Bitmap bmp) { int size = bmp.getRowBytes() * bmp.getHeight(); ByteBuffer b = ByteBuffer.allocate(size); bmp.copyPixelsToBuffer(b); byte[] bytes = new byte[size]; b.get(bytes, 0, bytes.length); ContentValues cv=new ContentValues(); cv.put(CHUNK, bytes); this.id= database.insert(TABLE, null, cv); } 

Probablemente quieras migrar un fragmento de imagen por fragmento, ya que hay límites / tamaño de BLOB recomendado (no recuerdo cuánto)

Consulte este tutorial , debe mostrarle lo que necesita.
Otro enlace útil.