Saya tidak tahu sama ada terdapat cara yang lebih baik dalam Android. Jika C++ digunakan untuk pemprosesan, adalah disyorkan untuk mencari perpustakaan untuk melakukannya, seperti ffmpeg.
1 Tukar YUV kepada RGB
Formula untuk menukar dua kepada satu sama lain adalah seperti berikut RGB kepada 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
Anda boleh menulis kod anda sendiri untuk melaksanakannya di sini, ia tidak sukar. Tetapi YUV mempunyai pelbagai format pensampelan dan kaedah penyimpanan, jadi apa yang anda dapat di sini tidak mencukupi byte[], anda juga perlu tahu rupa YUV. Oleh itu, adalah disyorkan agar anda terus mencari cara untuk mendapatkan data piksel RGB.
2. RGB ke Peta Bit
RGB ini juga mengalami masalah yang sama, mungkin RGB565/RGB555/RGB24/RGB32 dll. Anda masih perlu tahu bagaimana rupanya. Pustaka imej umum mempunyai pelaksanaan yang berkaitan dengan operasi Bitmap, yang boleh menetapkan data piksel secara langsung di sini. Contohnya, QBitmap::fromData
dalam Qt
Jika anda mahu melakukannya sendiri, anda perlu menulis sendiri pengepala fail. Untuk maklumat berkaitan, sila rujuk http://blog.csdn.net/o_sun_o/...
3. Bitmap ke BGRA
Jika anda melakukan ini sendiri, cuma ambil piksel dan simpan sendiri. Semua saluran Alpha yang ditambah ialah 0.
Saya tidak tahu sama ada terdapat cara yang lebih baik dalam Android.
Jika C++ digunakan untuk pemprosesan, adalah disyorkan untuk mencari perpustakaan untuk melakukannya, seperti ffmpeg.
1 Tukar YUV kepada RGB
Formula untuk menukar dua kepada satu sama lain adalah seperti berikut
RGB kepada YUV
YUV ke RGB
Anda boleh menulis kod anda sendiri untuk melaksanakannya di sini, ia tidak sukar.
Tetapi YUV mempunyai pelbagai format pensampelan dan kaedah penyimpanan, jadi apa yang anda dapat di sini tidak mencukupi
byte[]
, anda juga perlu tahu rupa YUV.Oleh itu, adalah disyorkan agar anda terus mencari cara untuk mendapatkan data piksel RGB.
2. RGB ke Peta Bit
RGB ini juga mengalami masalah yang sama, mungkin RGB565/RGB555/RGB24/RGB32 dll. Anda masih perlu tahu bagaimana rupanya.
dalam QtPustaka imej umum mempunyai pelaksanaan yang berkaitan dengan operasi Bitmap, yang boleh menetapkan data piksel secara langsung di sini. Contohnya,
QBitmap::fromData
Jika anda mahu melakukannya sendiri, anda perlu menulis sendiri pengepala fail. Untuk maklumat berkaitan, sila rujuk http://blog.csdn.net/o_sun_o/...
3. Bitmap ke BGRA
Jika anda melakukan ini sendiri, cuma ambil piksel dan simpan sendiri. Semua saluran Alpha yang ditambah ialah 0.