Domanda

Ho un app Android che chiama l'applicazione fotocamera nativa per scattare una foto e restituisce l'immagine per ulteriori manipolazioni. Il mio problema è che mi imbatto in perdite di memoria se la fotocamera è impostata su 2 (+) megapixel. Idealmente, lo voglio impostato il più basso (VGA) dal momento che la qualità delle immagini non è un problema con questa applicazione.

C'è un modo dal mio app per modificare le impostazioni di applicazione fotocamera del dispositivo nativo? Ecco il codice che sto usando:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            mImageCaptureUri = 
            Uri.fromFile(new file(Environment.getExternalStorageDirectory(),
            "fname_" + String.valueOf(System.currentTimeMillis()) + ".jpg"));
intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mImageCaptureUri);

Qualsiasi aiuto sarebbe apprezzato.

È stato utile?

Soluzione

Purtroppo non c'è modo di raccontare l'applicazione della fotocamera ciò che la risoluzione delle immagini che si desidera scattare la foto a.

Ma si può però fare qualcosa per voi stessi nella vostra app acesssing alcune funzionalità bitmap come (2 ° opzione sarebbe più adatto per le vostre esigenze)

  • Downsampling. La dimensione del campione deve essere superiore a 1. Prova 2 e 4.

    BitmapFactoryOptions.inSampleSize = sampleSize;

  • La creazione di una nuova bitmap con la dimensione che si richiedono dalla bitmap originale ..

    // calculate the change in scale 
    float scaleX = ((float) newWidth_that_you_want) / originalBitmap.width();
    float scaleY = ((float) newHeight_that_you_want) / originalBitmap.height();
    
    // createa matrix for the manipulation
    Matrix matrix = new Matrix();
    matrix.postScale(scaleX , scaleY );
    
    Bitmap newBitmap = Bitmap.createBitmap(originalBitmap, 0, 0, width, height, matrix, true);
    //since you don't need this bitmap anymore, mark it so that GC can reclaim it.
    //note: after recycle you should not use the originalBitmap object anymore.
    //if you do then it will result in an exception.
    originalBitmap.recycle();
    
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top