J'essaie de faire pivoter une image dans "OnpicTureakaken" ÇA Fonctionne bien si j'utilise une image 2MP mais si j'utilise une image de 12 mp, je reçois une erreur de mémoire hors mémoire. p> J'ai essayé de définir la "SETROTATION ()" des paramètres de la caméra, mais cela n'a rien fait. P> public void onClick(View v) {
sendPicturedTweet();
}
});
}
protected void sendPicturedTweet() {
if(camera!=null){
camera.stopPreview();
Camera.Parameters camParams=this.camera.getParameters();
List<Size> sizes=camParams.getSupportedPictureSizes();
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
int prefSize=Integer.parseInt(preferences.getString(getString(R.string.picture_quality_key), "0"));
camParams.setPictureSize(sizes.get(prefSize).width, sizes.get(prefSize).height);
camParams.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
camParams.setFlashMode(Camera.Parameters.FLASH_MODE_AUTO);
camParams.setWhiteBalance(Camera.Parameters.WHITE_BALANCE_AUTO);
camParams.setPictureFormat(ImageFormat.JPEG);
camParams.setJpegQuality(100);
camParams.setRotation(90);
camera.setParameters(camParams);
try{
this.camera.setPreviewDisplay(surfaceHolder);
this.camera.startPreview();
this.camera.takePicture(null, null, null, this);
}catch (Exception e) {
Log.e(LOG_TAG_VIDEO_PREVIEW, "ERROR IO on set preview display for camera.");
}
}
}
4 Réponses :
Lorsque vous atteignez cette ligne
Bitmap bBitmapRotate = Bitmap.createBitmap(bitmap1, 0, 0, bitmap1.getWidth(), bitmap1.getHeight(), mat, true);
Merci pour votre réponse, j'ai essayé de travailler sur l'image après, mais je ne suis même pas capable de le charger dans un bitmap.
Réduisez la taille de l'image à l'aide de bitmapfactory.option
C'est une option si je ne trouve pas de meilleure façon. J'ai besoin de la meilleure qualité possible et si je comprends ce droit: si je réduit la taille de l'image, je réduit également la qualité. J'ai besoin de conserver la résolution de 12MP.
Que diriez-vous:
bitmap1 = Bitmap.createBitmap(bitmap1, 0, 0, bitmap1.getWidth(), bitmap1.getHeight(), mat, true);
Vous pouvez utiliser JNI (à l'aide de la NDK) pour surmonter la limitation de la taille maximale des tas que Android impose sur des applications. p>
Dans ce cas, ce que vous pourriez faire est ce qui suit: p>
Si vous le souhaitez, j'ai créé un exemple de code qui le fait, ici . p>
Puis-je utiliser Renderscript pour le faire fonctionner?