java - Android surfaceview获取的YUV数据如何进行YUV转RGB转Bitmap转BGRA?
怪我咯
怪我咯 2017-04-18 10:49:03
0
1
866

用surfaceview获取到YUV类型的byte[]数据如何进行YUV转RGB转Bitmap转BGRA的过程?
希望有大神贴点代码,或者给一些相关资料借鉴下。

怪我咯
怪我咯

走同样的路,发现不同的人生

모든 응답(1)
PHPzhong

Android에 더 좋은 방법이 있는지는 모르겠습니다.
C++를 사용하여 처리하는 경우 ffmpeg와 같은 라이브러리를 찾는 것이 좋습니다.

1. YUV를 RGB로 변환

이 둘을 서로 변환하는 공식은 다음과 같습니다
RGB를 YUV로

으아악

YUV를 RGB로

으아악

여기서 구현하기 위해 자신만의 코드를 작성할 수 있습니다. 어렵지 않습니다.
하지만 YUV에는 다양한 샘플링 형식과 저장 방법이 있으므로 여기서 얻는 것만으로는 충분하지 않습니다byte[] YUV가 어떻게 생겼는지 알아야 합니다.
그래서 RGB 픽셀 데이터를 직접 얻을 수 있는 방법을 찾는 것이 좋습니다.

2. RGB를 비트맵으로

이 RGB에도 동일한 문제가 있습니다. RGB565/RGB555/RGB24/RGB32 등일 수 있습니다. 당신은 여전히 ​​​​그것이 어떻게 생겼는지 알아야합니다.
일반 이미지 라이브러리에는 픽셀 데이터를 직접 설정할 수 있는 비트맵 작업과 관련된 구현이 있습니다. 예를 들어 Qt의 QBitmap::fromData

직접 하시고 싶으시면 파일 헤더를 직접 작성하셔야 합니다. 관련 내용은 http://blog.csdn.net/o_sun_o/...를 참고하세요

3. BGRA에 대한 비트맵

이 작업을 직접 수행하는 경우 픽셀을 가져와 직접 저장하세요. 추가된 모든 알파 채널은 0입니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿