Autore Topic: Aggiungere un testo a una immagine in alta risoluzione e salvarla  (Letto 430 volte)

Offline Antares.eb

  • Nuovo arrivato
  • *
  • Post: 1
  • Respect: 0
    • Mostra profilo
0
Sono nuovo in questo forum perciò per cominciare vorrei fare un saluto a tutti.

Vorrei aggiungere un testo ad una immagine e poi salvarla su SdCard. Per farlo ho usato il comando Canvas.

Sono riuscito a nell'intento, ma mi sono accorto che quando salvo l'immagine questa è di bassa risoluzione, infatti l'immagine di partenza è 1024x1024 mentre quella salvata è 638x638 (grosso modo). Per 'costringere' Android a usare l'immagine ad alta risoluzione ho provato a inserirla nella cartella 'drawable' (senza appendici) , in 'drawable-nodpi' e anche 'drawable-mdpi', ma il risultato è che l'applicazione si blocca segnalando un errore alla seconda riga quando uso Canvas. Funziona solamente se l'immagine si trova in 'drawable-hdpi', ma il risultato è un'immagine di bassa qualità.

Codice (Java): [Seleziona]
Bitmap bmp1 = BitmapFactory.decodeResource(getResources(), R.drawable.sfondo_1g);
Canvas canvas = new Canvas(bmp1);

Segnala errore alla riga mFinalizer del file Canvas.class:

Codice (Java): [Seleziona]
public Canvas() {
        if (!isHardwareAccelerated()) {
            // 0 means no native bitmap
            mNativeCanvasWrapper = initRaster(0);
            mFinalizer = new CanvasFinalizer(mNativeCanvasWrapper);
        } else {
            mFinalizer = null;
        }
    }

Potete aiutarmi?
Altrimenti avete un metodo alternativo per assegnare un testo (multi riga) a un'immagine e salvarla?
Grazie mille a tutti quanti.

Offline mrfalco

  • Utente junior
  • **
  • Post: 81
  • Respect: +2
    • Mostra profilo
    • www.falcodomingo.it
  • Dispositivo Android:
    Samsung Galazy S
  • Sistema operativo:
    Windows Vista
Re:Aggiungere un testo a una immagine in alta risoluzione e salvarla
« Risposta #1 il: 14 Marzo 2015, 08:00:18 CET »
0
Ciao concettualmente potresti tramite la canvas risolvere il tuo problema prova a fare così:
Codice (Java): [Seleziona]
        Bitmap bmp1 = ((BitmapDrawable)ImageView.getDrawable()).getBitmap();

        Bitmap bmp2 = ((BitmapDrawable)TextView.getDrawable()).getBitmap();
       
        Bitmap finale=  Bitmap.createBitmap(bmp1.getWidth(), bmp1.getHeight(), Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(finale);
        canvas.drawBitmap(bmp1, 0,0, null);
        canvas.drawBitmap(bmp2, 0,0, null);
       
        Bitmap mutableBitmap = bmp.copy(Bitmap.Config.ARGB_8888, true);

a questo punto salva la mutable bitmap e dovresti ottenere il merge finale su file.