用surfaceview获取到YUV类型的byte[]数据如何进行YUV转RGB转Bitmap转BGRA的过程?
希望有大神贴点代码,或者给一些相关资料借鉴下。
PHPz2017-04-18 10:51:03
Android에 더 좋은 방법이 있는지는 모르겠습니다.
C++를 사용하여 처리하는 경우 ffmpeg와 같은 라이브러리를 찾는 것이 좋습니다.
이 둘을 서로 변환하는 공식은 다음과 같습니다
RGB를 YUV로
YUV를 RGB로
으아악여기서 구현하기 위해 자신만의 코드를 작성할 수 있습니다. 어렵지 않습니다.
하지만 YUV에는 다양한 샘플링 형식과 저장 방법이 있으므로 여기서 얻는 것만으로는 충분하지 않습니다byte[]
YUV가 어떻게 생겼는지 알아야 합니다.
그래서 RGB 픽셀 데이터를 직접 얻을 수 있는 방법을 찾는 것이 좋습니다.
이 RGB에도 동일한 문제가 있습니다. RGB565/RGB555/RGB24/RGB32 등일 수 있습니다. 당신은 여전히 그것이 어떻게 생겼는지 알아야합니다.
일반 이미지 라이브러리에는 픽셀 데이터를 직접 설정할 수 있는 비트맵 작업과 관련된 구현이 있습니다. 예를 들어 Qt의 QBitmap::fromData
직접 하시고 싶으시면 파일 헤더를 직접 작성하셔야 합니다. 관련 내용은 http://blog.csdn.net/o_sun_o/...를 참고하세요
이 작업을 직접 수행하는 경우 픽셀을 가져와 직접 저장하세요. 추가된 모든 알파 채널은 0입니다.