Autore Topic: Immagine grande per imageview  (Letto 401 volte)

Offline xixietto

Immagine grande per imageview
« il: 08 Agosto 2016, 16:53:54 CEST »
0
Salve,
Ottengo problemi nell inserimento di un immagine nell'imageview.
Le immagini vengono prese dalla galleria.. Ma succede che immagini inferiori a 1 MB, vengono prese correttamente.. Quelle superiori no..
Come potrei risolvere?
O sapete dirmi come ridimensionare un immagine..

Inviato dal mio GT-I9505 utilizzando Tapatalk


Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 583
  • Respect: +130
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:Immagine grande per imageview
« Risposta #1 il: 09 Agosto 2016, 10:51:30 CEST »
0
Non conta la dimensione del file, ma la risoluzione dell'immagine. Quanto è grande, in termini di pixel, questa immagine?
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline xixietto

Re:Immagine grande per imageview
« Risposta #2 il: 12 Agosto 2016, 07:58:00 CEST »
0
Ora ho capito.. Ma c'è un modo diminuire la risoluzione?
Non vorrei che l'immagine si "sgranasse" però..

Inviato dal mio GT-I9505 utilizzando Tapatalk


Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 583
  • Respect: +130
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:Immagine grande per imageview
« Risposta #3 il: 12 Agosto 2016, 09:47:21 CEST »
0
Codice (Java): [Seleziona]
Bitmap originale = ...;
Bitmap scalato = Bitmap.createScaledBitmap(originale, nuovaLarghezza, nuovaAltezza, false);
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline xixietto

Re:Immagine grande per imageview
« Risposta #4 il: 12 Agosto 2016, 10:02:21 CEST »
0
Che altezza e larghezza mi consigli di inserire?

Inviato dal mio GT-I9505 utilizzando Tapatalk


Offline xixietto

Re:Immagine grande per imageview
« Risposta #5 il: 12 Agosto 2016, 10:03:11 CEST »
0
Le immagini che prendo.. Le salvo in una cartella.. Dovrei fare qualche procedimento per ridimensionarle?
Oppure c'è un modo per sapere le dimensioni dell'immagine presa
« Ultima modifica: 13 Agosto 2016, 07:19:00 CEST da xixietto »

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 583
  • Respect: +130
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:Immagine grande per imageview
« Risposta #6 il: 12 Agosto 2016, 10:23:52 CEST »
0
Altezza e larghezza: dipende tutto da come saranno visualizzate queste immagini, non esistono dei valori consigliati

Immagini salvate: ovviamente sarebbe meglio ridimensionare le immagini troppo grandi PRIMA di salvarle, in modo che non devi farlo ogni volta che le carichi.

Altri suggerimenti utili: https://developer.android.com/training/displaying-bitmaps/load-bitmap.html
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline xixietto

Re:Immagine grande per imageview
« Risposta #7 il: 12 Agosto 2016, 10:44:25 CEST »
0
Eh.. È proprio questo che cerco.. Come si fa ? Vorrei ridimensionare l'immagine prima di salvarla..

Inviato dal mio GT-I9505 utilizzando Tapatalk
« Ultima modifica: 12 Agosto 2016, 10:48:19 CEST da xixietto »

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 583
  • Respect: +130
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:Immagine grande per imageview
« Risposta #8 il: 12 Agosto 2016, 11:06:30 CEST »
0

- Scarichi l'immagine a dimensione naturale
- Carichi l'immagine ridimensionata: https://developer.android.com/training/displaying-bitmaps/load-bitmap.html
- Salvi l'immagine ridimensionata:

Codice (Java): [Seleziona]
bitmapRidimensionato.compress(Bitmap.CompressFormat.JPEG, 95, tuoStream);
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline xixietto

Re:Immagine grande per imageview
« Risposta #9 il: 12 Agosto 2016, 16:02:35 CEST »
0
Riscontro dei problemi..
il mio codice attuale è questo:
Codice (Java): [Seleziona]
.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // in onCreate or any event where your want the user to
                // select a file
                Intent intent = new Intent();
                intent.setType("image/*");
                intent.setAction(Intent.ACTION_GET_CONTENT);
                startActivityForResult(Intent.createChooser(intent,
                        "Select Picture"), SELECT_PICTURE);
            }
        });
    }

Codice (Java): [Seleziona]
 @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == SELECT_PICTURE && resultCode == RESULT_OK && data != null && data.getData() != null) {
            //Definisco il percorso del nuovo file da salvare
            File destFile = new File(Environment.getExternalStorageDirectory().getPath() + "/folder/"+ valore_editText_nome+".png");
                    //Questo dovrà cambiare di volta in volta);
                if (importImage(this, data.getData(), destFile)) {
                    ImageView imgView = (ImageView) findViewById(R.id.imageView17);
                    // Set the Image in ImageView after decoding the String
                   // imgView.setImageURI(data.getData());
                    //int width = imgView.getDrawable().getIntrinsicWidth();
                    //int height = imgView.getDrawable().getIntrinsicHeight();

                                      //Immagine importata correttamente
                    String percorso = destFile.getAbsolutePath();
                    Drawable drw = Drawable.createFromPath(percorso);
                   imgView.setImageDrawable(drw);


                    BitmapFactory.Options options = new BitmapFactory.Options();
                    options.inJustDecodeBounds = true;
                    BitmapFactory.decodeResource(getResources(), R.id.imageView17, options);
                    int height = options.outHeight;
                    int width = options.outWidth;
                    String imageType = options.outMimeType;
                    //Immagine importata correttamente
                  Toast.makeText(this,"altezza "+ height+" lunghezza "+width+" tipo "+imageType, Toast.LENGTH_LONG).show();

non ottengo nessun valore nel toast.. dove sbaglio?
facendo in questo modo invece funziona
Codice (Java): [Seleziona]
 //int width = imgView.getDrawable().getIntrinsicWidth();
                    //int height = imgView.getDrawable().getIntrinsicHeight();

Offline xixietto

Re:Immagine grande per imageview
« Risposta #10 il: 13 Agosto 2016, 16:32:08 CEST »
0
in questo modo le immagini vengono caricate..
ma alcune non mantengono le proporzioni e risultato "compressate" altre invece diventano piccolissime
Codice (Java): [Seleziona]
  @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == SELECT_PICTURE && resultCode == RESULT_OK && data != null && data.getData() != null) {
            //Definisco il percorso del nuovo file da salvare
            File destFile = new File(Environment.getExternalStorageDirectory().getPath() + "/Macelleria/"+ valore_editText_nome+".png");
                    //Questo dovrà cambiare di volta in volta);
                if (importImage(this, data.getData(), destFile)) {

                    Uri immagine_uri=data.getData();
                    InputStream inputStream;
                     try{
                         inputStream= getContentResolver().openInputStream(immagine_uri);
                         Bitmap image= BitmapFactory.decodeStream(inputStream);
                          int width = imgView.getDrawable().getIntrinsicWidth();
                         int height = imgView.getDrawable().getIntrinsicHeight();
                         Bitmap scalato = Bitmap.createScaledBitmap(image, width / 2, height / 2, false);
                         imgView.setAdjustViewBounds(true);
                         imgView.setImageBitmap(scalato);