convertire una tela dell'immagine bitmap in in Android
-
26-09-2019 - |
Domanda
Sto cercando di sviluppare un'applicazione su tela, sto disegnando una bitmap sul disegno canvas.After, sto cercando di convertire un'immagine bitmap in.
qualcuno può darmi un suggerimento.
vi ringrazio in anticipo.
Soluzione
Consigli dipende da ciò che si sta cercando di fare.
Se si teme che i controlli impiegano molto tempo per disegnare, e si desidera attirare a una bitmap in modo da poter blit l'immagine bitmap piuttosto che ri-disegnare tramite una tela, quindi è Non vogliono essere a doppio indovinare la piattaforma - controlli di cache automaticamente il loro disegno in bitmap temporanei, e questi possono anche essere scaricati dal controllo utilizzando getDrawingCache()
Se si vuole disegnare utilizzando una tela a una bitmap, la solita ricetta è:
- Crea una bitmap di dimensioni corrette utilizzando
Bitmap.createBitmap()
- Crea una punta un'istanza tela che questo bitmap utilizzando
Canvas(Bitmap)
costruttore - Disegnare sulla tela
- Usa bitmap
Altri suggerimenti
Quindi, si crea un nuovo Bitmap
, ad esempio:
Bitmap myBitmap = new Bitmap( (int)Width, (int)Height, Config.RGB_565 )
con width
e height
essendo lo stesso come tela.
Avanti, uso canvas.setBitmap(myBitmap)
, ma non drawBitmap()
.
Dopo aver chiamato setBitmap
, tutto ciò che si disegna su tela è di fatto, attingendo tuo myBitmap
passando per il codice di esempio che ho illustrato.
Modifica :
Non è possibile creare direttamente una bitmap come ad esempio:
Bitmap myBitmap = new Bitmap( (int)Width, (int)Height, Config.RGB_565 );
È necessario utilizzare invece:
Bitmap myBitmap = Bitmap.createBitmap( (int)Width, (int)Height, Config.RGB_565 );
Altro esempio:
public Bitmap getBitmapNews(int item , boolean selected, int numbernews){
Bitmap bitmap;
if(selected)
bitmap=mBitmapDown[item].copy(Config.ARGB_8888, true);
else
bitmap=mBitmapUp[item].copy(Config.ARGB_8888, true);
Canvas canvas = new Canvas(bitmap);
if(numbernews<10){
canvas.drawBitmap(mNotiNews[numbernews],0,0,null);
}else{
canvas.drawBitmap(mNotiNews[0],0,0,null);
}
return bitmap;
}
Di seguito sono riportati i passi per convertire da tela a bitmap e la memorizzazione di galleria o cartella specifica.
Nota: Assicurarsi di aver dato il permesso di WRITE_EXTERNAL_STORAGE
activity_main.xml
<LinearLayout
android:id="@+id/linearLayout"
android:orientation="horizontal"
android:layout_margin="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<DrawingView
android:id="@+id/drawingView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
MainActivity.java
-
Crea riferimento del genitore il layout
LinearLayout linearLayout = (LinearLayout) findViewById(R.id.linearLayout);
-
Per memorizzare nella galleria
final String imagename = UUID.randomUUID().toString() + ".png"; MediaStore.Images.Media.insertImage(getContentResolver(), linearLayout .getDrawingCache(), imagename, "drawing");
-
Per convertire in bitmap
linearLayout.setDrawingCacheEnabled(true); linearLayout.buildDrawingCache(); Bitmap bitmap = Bitmap.createBitmap(linearLayout.getDrawingCache());