JavascriptProva

giovedì 1 settembre 2016

Affrontando il caricamento dei files immagine (campi BLOB di SQLite)

Ora devo ripassare come ho fatto a mettere un'immagine in forma di tipo BLOB all'interno di un database.

Apro il mio ImageCom.
Ecco: il membro del mio database è di tipo byte[] nella classe che poi verrà salvata nel database.
Viene salvata nel database direttamente come blob.


Ecco, per trasformare una bmp in byteArray ho usato una funzione creata da me che si chiama bitmapToByteArray.
Vediamola:
 public static byte[] BitmapToByteArray(Bitmap bmp,int quality){
  ByteArrayOutputStream stream=new ByteArrayOutputStream();
  bmp.compress(Bitmap.CompressFormat.JPEG, quality, stream);
  byte[] b=stream.toByteArray();
  return b;
 }
Creo una variabile ByteArrayOutputStream, vi "comprimo" la bitmap e poi la converto in toByteArray.
Bene, adesso sono in condizioni di riprovarci...

Ecco: creo una bitmap a partire dalle risorse:
 Bitmap bitmap= BitmapFactory.decodeResource(getResources(),R.drawable.facciadaculo);
Ora la devo trasformare in byte[].
Per cominciare, dichiaro un oggetto ByteArrayOutputStream:
        Bitmap bitmap= BitmapFactory.decodeResource(getResources(),R.drawable.facciadaculo);
        ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();
Quindi vi "verso" l'immagine...
        Bitmap bitmap= BitmapFactory.decodeResource(getResources(),R.drawable.facciadaculo);
        ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG,80,byteArrayOutputStream);
e quindi ottengo sotto forma di matrice di bytes:
        Bitmap bitmap= BitmapFactory.decodeResource(getResources(),R.drawable.facciadaculo);
        ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG,80,byteArrayOutputStream);
        byte[] byteImage=byteArrayOutputStream.toByteArray();
Ecco, quindi questo valore lo immettevo nella classe JImage, in quel membro di tipo byte[].

Quindi questo veniva immesso pacificamente in un campo BLOB del database SQLite.


Ora, con Firebase, come si può fare?
Credo di dover fare ricorso allo Storage, per cui adesso devo montare le API necessarie in Gradle...

Nessun commento:

Posta un commento