Je ne sais pas s’il existe une meilleure solution sous Android. Si C++ est utilisé pour le traitement, il est recommandé de trouver une bibliothèque pour le faire, comme ffmpeg.
1. Convertir YUV en RVB
La formule pour convertir les deux l'un en l'autre est la suivante RVB en YUV
Y = (0.257 * R) + (0.504 * G) + (0.098 * B) + 16
Cr = V = (0.439 * R) - (0.368 * G) - (0.071 * B) + 128
Cb = U = -(0.148 * R) - (0.291 * G) + (0.439 * B) + 128
Vous pouvez écrire votre propre code pour l'implémenter ici, ce n'est pas difficile. Mais YUV a une variété de formats d'échantillonnage et de méthodes de stockage, donc ce que vous obtenez ici n'est pas suffisant byte[], vous devez également savoir à quoi ressemble YUV. Il est donc recommandé de trouver directement un moyen d'obtenir des données de pixels RVB.
2. RVB vers Bitmap
Ce RVB a également le même problème, il peut s'agir de RVB565/RGB555/RGB24/RGB32 etc. Encore faut-il savoir à quoi ça ressemble. Les bibliothèques d'images générales ont des implémentations liées aux opérations Bitmap, qui peuvent définir directement les données de pixels, je n'en sais rien ici. Par exemple, QBitmap::fromData
dans Qt
Si vous souhaitez le faire vous-même, vous devez écrire vous-même l'en-tête du fichier. Pour des informations pertinentes, veuillez vous référer à http://blog.csdn.net/o_sun_o/...
3. Bitmap vers BGRA
Si vous faites cela vous-même, prenez simplement les pixels et enregistrez-les vous-même. Tous les canaux Alpha ajoutés sont 0.
Je ne sais pas s’il existe une meilleure solution sous Android.
Si C++ est utilisé pour le traitement, il est recommandé de trouver une bibliothèque pour le faire, comme ffmpeg.
1. Convertir YUV en RVB
La formule pour convertir les deux l'un en l'autre est la suivante
RVB en YUV
YUV vers RVB
Vous pouvez écrire votre propre code pour l'implémenter ici, ce n'est pas difficile.
Mais YUV a une variété de formats d'échantillonnage et de méthodes de stockage, donc ce que vous obtenez ici n'est pas suffisant
byte[]
, vous devez également savoir à quoi ressemble YUV.Il est donc recommandé de trouver directement un moyen d'obtenir des données de pixels RVB.
2. RVB vers Bitmap
Ce RVB a également le même problème, il peut s'agir de RVB565/RGB555/RGB24/RGB32 etc. Encore faut-il savoir à quoi ça ressemble.
dans QtLes bibliothèques d'images générales ont des implémentations liées aux opérations Bitmap, qui peuvent définir directement les données de pixels, je n'en sais rien ici. Par exemple,
QBitmap::fromData
Si vous souhaitez le faire vous-même, vous devez écrire vous-même l'en-tête du fichier. Pour des informations pertinentes, veuillez vous référer à http://blog.csdn.net/o_sun_o/...
3. Bitmap vers BGRA
Si vous faites cela vous-même, prenez simplement les pixels et enregistrez-les vous-même. Tous les canaux Alpha ajoutés sont 0.