>  Q&A  >  본문

java - Android surfaceview获取的YUV数据如何进行YUV转RGB转Bitmap转BGRA?

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

怪我咯怪我咯2714일 전806

모든 응답(1)나는 대답할 것이다

  • PHPz

    PHPz2017-04-18 10:51:03

    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입니다.

    회신하다
    0
  • 취소회신하다