J'ai une application avec une fonction de caméra. J'utilise l'API Android Camera2. J'ai trouvé que certains appareils Android (par exemple Nexus 6P, Nexus 5) fonctionnent mieux si le ImageReader
est configuré pour fournir: JPEGsComment choisir un type de tampon ImageReader pour mon application pour appareil photo Android?
imageReader = ImageReader.NewInstance(width, height, ImageFormatType.Jpeg, 2);
Et certains appareils Android (Nexus 7 par exemple 2013) fonctionnent mieux si le ImageReader
est configuré pour fournir, par exemple, RGBA_8888
:
imageReader = ImageReader.NewInstance(width, height, (ImageFormatType)1 /* PixelFormat.RGBA_8888 */, 2);
Le dispositif qui fonctionne mieux avec les fichiers JPEG recrache cette erreur si j'utilise RGBA_8888
:
[ImageReader_JNI] Producer output buffer format: 0x22, ImageReader configured format: 0x1
Le dispositif qui fonctionne mieux avec des tampons RGBA recrache cet avertissement si j'utilise les fichiers JPEG: (Il fonctionne toujours, mais il est assez lent que l'image capturée est sombre.)
[ImageReader_JNI] ImageReader_lockedImageSetup: Receiving JPEG in HAL_PIXEL_FORMAT_RGBA_8888 buffer.
Je dois faire un peu de traitement sur ce que je récupère, donc en fin de compte ce serait mieux si je pouvais configurer la caméra pour cracher juste une sorte de bitmap plutôt qu'un JPEG, puisque je dois convertir le JPEG en Bitmap
avant de continuer. Comment choisir le type de tampon à transmettre au ImageReader
?
Quelle est votre utilisation? Instantanés uniques (peu de captures par seconde) ou capture continue (~ 30fps)? –
J'ai une surface de prévisualisation qui prend une capture continue jusqu'à ce que vous appuyiez sur le bouton Prendre une image, à quel point elle est capturée par le 'ImageReader'. –