Quando sto usando copyPixelsFromBuffer e copyPixelsToBuffer, la bitmap non visualizza come la stessa, ho cercato qui di seguito il codice:nuova bitmap, cambio a copiare utilizzando Buffer
Bitmap bm = BitmapFactory.decodeByteArray(a, 0, a.length);
int[] pixels = new int[bm.getWidth() * bm.getHeight()];
bm.getPixels(pixels, 0, bm.getWidth(), 0, 0,bm.getWidth(),bm.getHeight());
ByteBuffer buffer = ByteBuffer.allocate(bm.getRowBytes()*bm.getHeight());
bm.copyPixelsToBuffer(buffer);//I copy the pixels from Bitmap bm to the buffer
ByteBuffer buffer1 = ByteBuffer.wrap(buffer.array());
newbm = Bitmap.createBitmap(160, 160,Config.RGB_565);
newbm.copyPixelsFromBuffer(buffer1);//I read pixels from the Buffer and put the pixels to the Bitmap newbm.
imageview1.setImageBitmap(newbm);
imageview2.setImageBitmap(bm);
Perché il bm bitmap e newbm non mostravano lo stesso contenuto?
BitmapFactory.Options opts = new Options(); opts.inPreferredConfig = Config.RGB_565; \t \t \t \t \t bm = BitmapFactory.decodeByteArray (a, 0, a.length, opts); La configurazione della bitmap originale è RGB565, anche se non configuro la configurazione, la configurazione è predefinita come RGB565 ... – Hexor
@Hexor Gli altri metodi descritti nella mia risposta funzionano? Quanto è diverso 'newbm' rispetto a' bm'? –
La dimensione non è giusta e la qualità è molto bassa. Ho trovato personalmente una soluzione che, come questo, creava una Bitmap chiamata originBm e chiamava il metodo di decodifica di BitmapFactory per inizializzare l'origineBm (assicurati solo che il parametro potesse inizializzare l'origineBm a destra), quindi uso newbm = originBm; newbm.copyPixelsFromBuffer (buffer1). Dopo questo, il newbm potrebbe visualizzare la cosa giusta. Non so quale sia la causa, ma ho pensato che magari usando copyPixelsFromBuffer() ci sia mancato qualcosa che il metodo createBitmap() non poteva darci. – Hexor