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.

È stato utile?

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 è:

  1. Crea una bitmap di dimensioni corrette utilizzando Bitmap.createBitmap()
  2. Crea una punta un'istanza tela che questo bitmap utilizzando Canvas(Bitmap) costruttore
  3. Disegnare sulla tela
  4. 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

  1. Crea riferimento del genitore il layout

    LinearLayout linearLayout = (LinearLayout) findViewById(R.id.linearLayout);
    
  2. Per memorizzare nella galleria

    final String imagename = UUID.randomUUID().toString() + ".png";
    MediaStore.Images.Media.insertImage(getContentResolver(), linearLayout .getDrawingCache(), imagename, "drawing");
    
  3. Per convertire in bitmap

    linearLayout.setDrawingCacheEnabled(true);
    linearLayout.buildDrawingCache();
    Bitmap bitmap = Bitmap.createBitmap(linearLayout.getDrawingCache());
    
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top