Autore Topic: Dimensione Bitmap prima di salvarla?  (Letto 428 volte)

Offline RogoMantiK

  • Utente junior
  • **
  • Post: 61
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Xperia Neo
Dimensione Bitmap prima di salvarla?
« il: 05 Settembre 2013, 10:23:07 CEST »
0
Se ho due bitmap del tipo
Codice (Java): [Seleziona]
final Bitmap preview = BitmapFactory.decodeResource(getResources(), R.drawable.jpg_image);
                                ByteArrayOutputStream outStream = new ByteArrayOutputStream();
                                preview.compress(Bitmap.CompressFormat.JPEG, flagQuality, outStream); //flagQuality=50
                                Bitmap compressed = BitmapFactory.decodeStream(new ByteArrayInputStream(outStream.toByteArray()));
                                compImage.setImageBitmap(compressed);

e voglio sapere la dimensione che i due file andranno ad occupare quando saranno salvati. Come si fa?
ho provato (cercando su internet)
Codice (Java): [Seleziona]
@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR1)
            protected int sizeOf(Bitmap data) {
                if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB_MR1) {
               
                    return data.getRowBytes() * data.getHeight();
                } else {
                   return data.getByteCount();
                }

Ma il risultato è sempre lo stesso
lo visualizzo con un comando
Codice (Java): [Seleziona]
tvqBefore.setText(String.format(getString(R.string.istr_setting_quality), sizeOf(compressed)));Che mi da un output del tipo Dimensione: 150400 (uguale per tutte e due le bitmap e che non cambia al variare della compressione). Qui ho scritto solo una riga ma lo faccio per tutte e due le bitmap

se al posto di sizeOf(compressed) metto outStream.size() ottengo un valore che cambia quando cambio la compressione ma non mi sembra  in byte

qualità 100
originale 150400 (sizeOf)
outstream 26868 (outsteram.size)
file salvato 9.43 KB

qualità 0
originale 150400 (sizeOf)
outstream 1612 (outsteram.size)
file salvato 4.10 KB

dimensione file nella directory drawable 11.1KB



Post unito: 06 Settembre 2013, 15:09:14 CEST
Mi do una risposta da solo.
le variabili bitmap (preview e compressed) occupano la stessa memoria in quanto le bitmap per definizione sono "non compresse". La differenza si nota solo dopo aver salvato il file
Perciò l'unica soluzione è salvare i due files e usare file.lenght()

per avere la dimensione in KB

(double) (nomefile.lenght() / 1024);
« Ultima modifica: 06 Settembre 2013, 15:09:14 CEST da RogoMantiK, Reason: Merged DoublePost »