Autore Topic: Ridimensionamento foto  (Letto 498 volte)

Offline Ivan86

  • Utente junior
  • **
  • Post: 139
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S II
  • Sistema operativo:
    Windows 7
Ridimensionamento foto
« il: 04 Maggio 2013, 16:11:22 CEST »
0
Ciao,

ho seguito questo tutorial per reperire una foto da fotocamera e da gallery: https://dev.tscolari.me/2011/10/10/android-camera-and-image-gallery/

Ora ho necessità di passare la foto scelta al server, ma le dimensioni della foto sono superiori a 1,5MB.
Come posso passare al server la foto (che provenga dalla galleria o che provenga dalla camera) ridimensionata e quindi meno pesante?

Ho provato così:
Codice (Java): [Seleziona]
       
        BitmapFactory.Options o = new BitmapFactory.Options();
        o.inSampleSize = 8;
        Bitmap newImage = Bitmap.createScaledBitmap(BitmapFactory.decodeFile(filePath, o),50,50,false);
ma ovviamente mi ridimensiona solamente l'immagine (thumbnail) che visualizzo.
Inviando la foto al server io prendo path e nome del file che hanno ancora le dimensioni originarie

Post unito: 04 Maggio 2013, 19:37:26 CEST
ho risolto cosi:

Codice (Java): [Seleziona]
        imgResize = Bitmap.createScaledBitmap(imgCamera, 800, 600, false);
        ByteArrayOutputStream bytes = new ByteArrayOutputStream();
        imgResize.compress(Bitmap.CompressFormat.JPEG, 100, bytes);

        File fFoto = new File(Environment.getExternalStorageDirectory(), foto);
        try {
                fFoto.createNewFile();
                FileOutputStream fo = new FileOutputStream(fFoto);
                fo.write(bytes.toByteArray());
                fo.close();
               
                } catch (IOException e) {
                        e.printStackTrace();
                }
« Ultima modifica: 04 Maggio 2013, 19:37:26 CEST da Ivan86, Reason: Merged DoublePost »

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:Ridimensionamento foto
« Risposta #1 il: 04 Maggio 2013, 20:38:28 CEST »
0
Puoi risparmiare spazio, oltre a ridurre la risoluzione,  riducendo la qualità fino a un valore accettabile, di solito non si usa il 100% ma valori inferiori.

Usi un oggetto "ByteArrayOutputStream" di supporto inutile, il metodo "compress" salva direttamente l'immagine in un file se usi un oggetto "FileOutputStream" direttamente.
adb logcat | tee /tmp/logcat | grep TAG

Offline Ivan86

  • Utente junior
  • **
  • Post: 139
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S II
  • Sistema operativo:
    Windows 7
Re:Ridimensionamento foto
« Risposta #2 il: 04 Maggio 2013, 21:06:07 CEST »
0
grazie della spiegazione. Se ho ben capito intendevi questo:
Codice (Java): [Seleziona]
        imgResize = Bitmap.createScaledBitmap(imgCamera, 800, 600, false);
        try {
                fFoto = new File(pathFoto, foto);
                FileOutputStream fo = new FileOutputStream(fFoto);
                imgResize.compress(Bitmap.CompressFormat.JPEG, 100, fo);
       
                fFoto.createNewFile();
                fo.flush();
                fo.close();
               
                 ...

                // Carico la foto su server e poi la cancello
               
                } catch (IOException e) {
                        e.printStackTrace();
                }
               
                this.imgThumb.setImageBitmap(imgCamera);

« Ultima modifica: 04 Maggio 2013, 22:48:50 CEST da Ivan86 »

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:Ridimensionamento foto
« Risposta #3 il: 05 Maggio 2013, 10:11:09 CEST »
0
Si, usi meno memoria e impiega meno tempo per salvare l'immagine.

Inviato dal mio LG-P990 con Tapatalk 2

adb logcat | tee /tmp/logcat | grep TAG

Offline Ivan86

  • Utente junior
  • **
  • Post: 139
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S II
  • Sistema operativo:
    Windows 7
Re:Ridimensionamento foto
« Risposta #4 il: 05 Maggio 2013, 11:24:50 CEST »
0
Si infatti ho notato che ha impiegato meno tempo con una immagine più pesante.
Grazie :)