2 votes

Problème étrange avec la transparence des bitmaps lors de l'enregistrement en BLOB

Pris au piège dans un étrange problème de transparence des bitmaps, j'ai des images avec moi et je les convertis en Blob et les stocke dans une base de données locale.

J'ai cette image

enter image description here

après l'avoir stocké en tant que Blob et l'avoir récupéré, l'arrière-plan de l'image est rempli.

enter image description here

Avez-vous une idée de la raison pour laquelle cela se produit et de la manière dont on peut y remédier ?

Merci.

Voici comment je convertis en octet et stocke dans la base de données.

public byte[] BitmapToByte(Bitmap bitmap)
    {
        ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos); //bm is the bitmap object   
        byte[] b = baos.toByteArray();
        return b;
    }

Voici comment je récupère le Blob en tant que Bitmap à partir de la base de données.

mImageView.setImageBitmap(BitmapFactory.decodeByteArray(blob, 0, blob.length)); //blob par curseur

0voto

hotveryspicy Points 21181

J'ai trouvé la solution, c'est à cause de l'utilisation du dossier Thumbnail d'Android (qui crée un aperçu supplémentaire et me fait passer le curseur de la vignette à l'adaptateur d'image). Lorsque je récupère l'image directement à partir de la base de données, elle est transparente.

0voto

Allen Wang Points 298

Mon problème est résolu : il suffit de changer le

Bitmap.CompressFormat.JPG vers Bitmap.CompressFormat.PNG

 public byte[] BitmapToByte(Bitmap bitmap)
        {
            ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
            //bitmap.compress(Bitmap.CompressFormat.JPG, 100, baos); //origin
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos); //fixed

            byte[] b = baos.toByteArray();
            return b;
        }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X