Autore Topic: salvare immagine  (Letto 2624 volte)

Offline checo79

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    magic
  • Sistema operativo:
    supereclair 8.2
salvare immagine
« il: 18 Marzo 2010, 15:29:15 CET »
0
Come facio a salvare un immagine visualizzata in un imageview?
ho creato un menù che richiama il salvataggio, solo che non so come farla salvare effettivamente! :D
« Ultima modifica: 15 Maggio 2010, 17:26:21 CEST da JD »

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:salvare immagine
« Risposta #1 il: 18 Marzo 2010, 16:22:57 CET »
0
Ciao checo, hai già posto questa domanda in un altro tuo thread, sarebbe meglio non inserire post doppi.
Hai fatto comunque bene ad aprire una nuova discussione visto che la vecchia non trattava questo argomento.

Do poi un consiglio a te e a tutti quelli che chiedono aiuto: è buona norma ringraziare sempre per le risposte ricevute, anche perché chi mette a disposizione il suo tempo e le sue competenze per aiutare qui sul forum, lo fa pro bono.
Un "grazie" in più potrebbe fare la differenza tra l'ottenere la risposta desiderata e l'essere ignorato :).
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline checo79

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    magic
  • Sistema operativo:
    supereclair 8.2
Re:salvare immagine
« Risposta #2 il: 18 Marzo 2010, 16:28:13 CET »
0
si scusa pensavo di aver chiesto come gestire un'altra cosa :D

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +203
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:salvare immagine
« Risposta #3 il: 18 Marzo 2010, 16:33:13 CET »
0
Visto che hai un drawable (http://www.anddev.it/index.php/topic,77.0.html) come sorgente immagine,
devi trasformare questo drawable in bitmap.
Chiaramente, se avessi già a disposizione una bitmap, non dovresti eseguire questo passaggi0.

Successivamente devi scrivere una "entry" nel db delle immagini (ContentProvider), e scrivere la bitmap sullo stream di dati associato a questa "entry"

procedi in questo modo:

Codice (Java): [Seleziona]
                        Drawable d=.......// immagine da salvare
                        Uri imagesUri=Media.EXTERNAL_CONTENT_URI;//db immagini sd card
                       
                        ContentValues values=new ContentValues();
                        values.put(Media.DISPLAY_NAME, "image_1");
                        values.put(Media.DESCRIPTION, "Mia immagine");
                        values.put(Media.MIME_TYPE, "image/jpeg");
                       
                        //creiamo una bitmap di dimensioni adatti
                        Bitmap bitmap=Bitmap.createBitmap(d.getBounds().width(),d.getBounds().height(), Bitmap.Config.ARGB_8888);
                        Canvas c=new Canvas(bitmap);
                        // il canvas è l elemento che ci permette di disegnare un bitmap
                       
                       
                        d.draw(c); //disegnamo il drawable sul canvas, di conseguenza riempiamo la bitmap.
                       
                        Uri ptr=getContentResolver().insert(imagesUri, values);  
                        //inseriamo i valori e salviamoci l uri di questa immagine
                       
                        try {
                                        OutputStream outStream = getContentResolver().openOutputStream(ptr);
                                        bitmap.compress(Bitmap.CompressFormat.JPEG, 80, outStream); //scriviamo la bitmap sullo stream
                                       //decidiamo il formato di compressione e il livello di qualità (100 qualità massima/compressione minima)
                                } catch (FileNotFoundException e) {
                                        Log.e("Demo", e.toString());
                                }


Un Saluto.
Qlimax

doc content providers: http://developer.android.com/guide/topics/providers/content-providers.html
« Ultima modifica: 18 Marzo 2010, 17:32:11 CET da Qlimax »

Offline checo79

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    magic
  • Sistema operativo:
    supereclair 8.2
Re:salvare immagine
« Risposta #4 il: 18 Marzo 2010, 17:06:46 CET »
0
mmmm, intanto grazie, mo provo a vedere.

d.getBounds() cosa sarebbe un drawable?
« Ultima modifica: 18 Marzo 2010, 17:23:51 CET da checo79 »

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +203
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:salvare immagine
« Risposta #5 il: 18 Marzo 2010, 17:30:21 CET »
0
I bounds sono (letteralmente) i limiti.

Codice (Java): [Seleziona]
Bitmap bitmap=Bitmap.createBitmap(d.getBounds().width(),d.getBounds().height(), Bitmap.Config.ARGB_8888);
in questa riga di codice creiamo una bitmap di dimensioni(width/height) uguali al drawable.

d.getBounds().width()  ci da la larghezza del drawable ad esempio.

chiaramente l oggetto d, si riferisce ad un istanza della classe Drawable.


Saluti.
Qlimax

Offline checo79

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    magic
  • Sistema operativo:
    supereclair 8.2
Re:salvare immagine
« Risposta #6 il: 18 Marzo 2010, 18:02:42 CET »
0
ok fatto funziona, grazie mille.
ora mi manca solo come gestire l'autorotate.

Offline Salvo_morph

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Spica
  • Sistema operativo:
    Mac OS X 10.7.4
Re:salvare immagine
« Risposta #7 il: 22 Maggio 2012, 02:49:35 CEST »
0
E se volessi salvare le immagini in un percorso predefinito della cartella?
Ho provato ad impostare un mio percorso personale, ma mi da il seguente errore a questa riga di codice

Codice: [Seleziona]
Uri ptr=getContentResolver().insert(Uri.parse("/sdcard/temp/"), values); 
L'errore è "Invalid URI"


Ps: utilizzando il codice di Qlimax, si può in qualche modo dare il nome al file che si salva?
« Ultima modifica: 22 Maggio 2012, 03:03:35 CEST da Salvo_morph »

Offline denper

  • Utente normale
  • ***
  • Post: 290
  • Respect: +60
    • Mostra profilo
    • Anddenper
  • Dispositivo Android:
    Moto G
  • Play Store ID:
    denper
  • Sistema operativo:
    Window 7, Windows XP
Re:salvare immagine
« Risposta #8 il: 22 Maggio 2012, 08:54:52 CEST »
0
E se volessi salvare le immagini in un percorso predefinito della cartella?
Ho provato ad impostare un mio percorso personale, ma mi da il seguente errore a questa riga di codice

Codice: [Seleziona]
Uri ptr=getContentResolver().insert(Uri.parse("/sdcard/temp/"), values); 
L'errore è "Invalid URI"


Ps: utilizzando il codice di Qlimax, si può in qualche modo dare il nome al file che si salva?

Tipo:

Codice (Java): [Seleziona]
Bitmap bitmap=Bitmap.createBitmap(d.getBounds().width(),d.getBounds().height(), Bitmap.Config.ARGB_8888);
...
FileOutputStream fos = new FileOutputStream(Environment.getExternalStorageDirectory() + File.separator + "imagename.jpg");
bitmap.compress(CompressFormat.PNG, 100, fos);
fos.close();

Ricordati di aggiungere nel manifest i permessi per scrivere sull'SD.

Codice (XML): [Seleziona]
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la inventa. [A.Einstein]

Proteggi la tua privacy! Utilizza GhostPhone! https://play.google.com/store/apps/details?id=com.denper.gp
Giochi a Winforlife e Superenalotto e sei stanco di controllare le tue schedine manualmente? Prova Checkwin: https://play.google.com/store/apps/details?id=com.denper.checkwintrial

Offline Salvo_morph

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Spica
  • Sistema operativo:
    Mac OS X 10.7.4
Re:salvare immagine
« Risposta #9 il: 26 Maggio 2012, 17:13:19 CEST »
0
Allora, vi spiego un po' quello che devo fare.

Sostanzialmente, il programma deve condividere delle immagini. Queste immagini sono contenute nella cartella res/drawable, e le faccio scegliere attraverso il widget Gallery. Al click sull'immagine in anteprima nel widget Gallery, la faccio visualizzare in una ImageView.

Il mio problema è che non riesco a salvare l'immagine scelta in una determinata posizione della memoria ("/sdcard/nomeapplicazione/").


[Aggiornamento] Mi sono adeguato alla posizione in cui viene salvata l'immagine. Se qualcuno conosce la soluzione, però, sarà di certo gradita se la esporrete :)
« Ultima modifica: 26 Maggio 2012, 17:36:53 CEST da Salvo_morph »