Je demande s'il y a un moyen simple, car il y a un rapport d'émission Google en disant que l'utilisation decodeByteArray est impossible. Mais ce rapport est né en 2008 et j'espérais qu'il n'y avait pas de solution. La méthode indiquée sur le rapport de problème était de décoder vous-même le format, mais je préférerais ne pas avoir à le mettre dans et ralentir le programme. Toute aide serait appréciée.Yat-il un moyen simple de tourner le tableau d'octets de onPreviewFrame de la caméra dans une image dans Android?
Répondre
La façon la plus simple est de créer un BufferedImage de la manière suivante:
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0. data.length);
données
est le tableau d'octets.
Je suppose que votre tableau d'octets est de l'aperçu de la caméra? Si c'est le cas, vous devez le décoder, mais avec 2.2, c'est assez facile maintenant.
Créer une image YUV à partir du tableau d'octets que les données ne seront ImageFormat.NV21(int code 17)
img = new YuvImage(imgData, ImageFormat.NV21, width, height, null);
Créer un rectangle de la même taille que l'image.
Créez un ByteArrayOutputStream
et transmettez-le, le rectangle et la valeur de compression à compressToJpeg()
.
Ensuite, vous pouvez utiliser
Bitmap mBitmap = BitmapFactory.decodeByteArray(outputStream.toByteArry(),0,outputStream.size());
J'utilise ceci pour chaque image dans le rappel et il fonctionne très bien. J'espère que cela t'aides.
Pouvez-vous montrer correctement votre code – Nepster
Um êtes-vous sûr qui fonctionne sous Android? Je ne trouve aucun document de référence pour BufferedImage ou ImageIO. Il est répertorié dans la référence de langage Java, mais pas Android – RyoxSinfar
Oui, j'ai copié le mauvais code. J'ai modifié ma réponse. Pardon. – RoflcoptrException
THats ce que je pensais à l'origine la réponse était, mais il me donne un bitmap nul retour. – RyoxSinfar