Octet Android [] à l'image dans Camera.onPreviewFrame
Quand vous essayez de convertir le byte[]
de Camera.onPreviewFrame
à Bitamp
à l'aide de BitmapFactory.decodeByteArray
me donne une erreur SkImageDecoder::Factory returned null
Voici mon code:
public void onPreviewFrame(byte[] data, Camera camera) {
Bitmap bmp=BitmapFactory.decodeByteArray(data, 0, data.length);
}
source d'informationauteur Vinod Maurya
Vous devez vous connecter pour publier un commentaire.
Cela a été dur à trouver! Mais depuis API 8, il y a un YuvImage classe dans android.les graphiques. Ce n'est pas une Image descendant, donc tout ce que vous pouvez faire, c'est de l'enregistrer en Jpeg, mais vous pouvez l'enregistrer dans la mémoire de flux et de les charger dans une Image Bitmap si c'est ce que vous avez besoin.
Depuis Android 3.0, vous pouvez utiliser un
TextureView
etTextureSurface
pour afficher la caméra, et ensuite utilisermTextureView.getBitmap()
pour récupérer un sympathique RVB aperçu.Un très squelettique exemple de la façon de le faire est donné dans le TextureView docs. Notez que vous devrez définir votre application ou de l'activité pour l'accélération matérielle en mettant
android:hardwareAccelerated="true"
dans le manifeste.J'ai trouvé la réponse après une longue période de temps. Ici, il est...
Au lieu d'utiliser
BitmapFactory
j'ai utilisé ma méthode personnalisée pour décoder cebyte[] data
valable format de l'image. Pour décoder l'image d'une ordonnance d'un format d'image, il faut savoir quel format de l'image est utilisée par l'appareil photo en appelantappareil photo.getParameters().getPictureFormat()
. Cette fonction retourne une constante définie parImageFormat
. Après avoir connu le format, utilisez le codeur pour coder l'image.Dans mon cas, le
byte[] data
était dans leYUV
format, j'ai donc cherchéYUV
àBMP
de conversion et qui a résolu mon problème.vous pouvez essayer ceci:
Cet exemple envoyer des images de la caméra à un serveur