Question

J'ai une application Android qui appelle l'application appareil photo natif pour prendre une photo et retourne l'image pour une manipulation ultérieure. Mon problème est que je lance dans les fuites de mémoire si l'appareil est réglé sur 2 (+) mégapixels. Idéalement, je veux le régler au plus bas (VGA) puisque la qualité de l'image est pas un problème avec cette application.

Est-il possible de mon application pour modifier les paramètres de l'application de la caméra de l'appareil natif? Voici le code que je utilise:

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);

Toute aide serait appréciée.

Était-ce utile?

La solution

Malheureusement, il n'y a aucun moyen de dire l'application de la caméra ce que la résolution image que vous voulez prendre la photo à.

Mais vous pouvez cependant faire quelque chose vous-même dans votre application par acesssing certaines fonctionnalités bitmap comme (2ème option serait plus adaptée à vos besoins)

  • Le sous-échantillonnage. Taille de l'échantillon doit être supérieur à 1. Essayez 2 et 4.

    BitmapFactoryOptions.inSampleSize = sampleSize;

  • Création d'une nouvelle image à la taille que vous avez besoin du bitmap d'origine ..

    // 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();
    
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top