LibYuv¶
LibYuv:基于Google的libyuv编译封装的YUV转换工具库,主要用途是在各种YUV与RGB之间进行相互转换、裁减、旋转、缩放、镜像等。
Gif 展示¶
你也可以直接下载 演示App 体验效果
引入¶
Gradle:¶
-
在Project的 build.gradle 或 setting.gradle 中添加远程仓库
repositories { //... mavenCentral() }
-
在Module的 build.gradle 里面添加引入依赖项
// AndroidX implementation 'com.github.jenly1314:libyuv:1.0.0'
使用¶
使用概要¶
LibYuv中的功能方法主要包括:格式转换、裁减、旋转、缩放、镜像等;下面就以文档注释的形式对一些主要的方法做个简要说明。
格式转换¶
/**
* 将Image转换为I420
*
* @param image 图像;{@link Image}
* @param degrees 需要旋转的角度
* @return 返回I420数据
*/
LibYuv.imageToI420(image, degrees)
/**
* NV21转I420
*
* @param nv21Data 源NV21数据
* @param width 图像宽度
* @param height 图像高度
* @return 返回I420数据
*/
LibYuv.nv21ToI420(nv21Data, width, height)
/**
* I420转NV21
*
* @param i420Data 源I420数据
* @param width 图像宽度
* @param height 图像高度
* @return 返回NV21数据
*/
LibYuv.i420ToNv21(i420Data, width, height)
通用格式转换(各种YUV与RGB之间相互转换)¶
/**
* 将I420数据转换为指定格式的数据
*
* @param i420Data 源I420数据
* @param width 图像宽度
* @param height 图像高度
* @param fourcc 指定数据格式;{@link FourCC}
* @return 返回转换成指定格式后的数据
*/
LibYuv.convertFromI420(i420Data, width, height, fourcc)
/**
* 将指定格式的数据转换为I420数据
*
* @param srcData 源数据
* @param width 图像宽度
* @param height 图像高度
* @param fourcc 指定数据格式;{@link FourCC}
* @return 返回I420数据
*/
LibYuv.convertToI420(dstData, width, height, fourcc)
旋转¶
/**
* 将指定格式的数据进行旋转
*
* @param srcData 源数据
* @param width 图像宽度
* @param height 图像高度
* @param degrees 需要旋转的角度;{@link RotationMode}
* @param fourcc 指定数据格式;{@link FourCC}
* @return 返回旋转后的数据
*/
LibYuv.rotate(srcData, width, height, degrees, fourcc)
缩放¶
/**
* 将指定格式的数据进行缩放
*
* @param srcData 源数据
* @param width 图像宽度
* @param height 图像高度
* @param dstWidth 目标宽
* @param dstHeight 目标高
* @param fourcc 指定数据格式;{@link FourCC}
* @param filterMode 压缩过滤模式;{@link FilterMode}
* @return 返回缩放后的数据
*/
LibYuv.scale(srcData, width, height, dstWidth, dstHeight, fourcc, filterMode)
裁减¶
/**
* 将指定格式的数据进行裁减
*
* @param srcData 源数据
* @param width 图像宽度
* @param height 图像高度
* @param cropRect 裁减的矩形区域
* @param fourcc 指定数据格式;{@link FourCC}
* @return 返回裁减后的数据
*/
LibYuv.crop(srcData, width, height, cropRect, fourcc)
镜像¶
/**
* 将指定格式的数据进行镜像翻转
*
* @param srcData 源数据
* @param width 图像宽度
* @param height 图像高度
* @param fourcc 指定数据格式;{@link FourCC}
* @return 返回镜像翻转后的数据
*/
LibYuv.mirror(srcData, width, height, fourcc)
更多使用详情,请查看app中的源码使用示例或直接查看 API帮助文档
温馨提示
-
关于 FourCC 说明;在 FourCC 中定义了很多数据格式类型(各种YUV与RGB格式;例如:I420、I422、NV21、NV12、ARGB、BGRA等);
在使用各转换方法时,明确转换前和转换后的数据格式类型,这一点很重要。
-
还有个小细节需要注意,如果在转换过程中出现转换结果图像的颜色与源图像颜色不一致时,很大可能是数据格式的问题;也就是数据的排列顺序不对,这时只需修改下入参的数据格式就行。
比如:当使用 RGBA 数据进行转换操作时,在使用LibYuv时数据的排列顺序是反的,这时需使用 ABGR 来表示这个排列(即:指定数据格式为:
FourCC.FOURCC_ABGR
)
相关推荐¶
- CameraScan 一个简化扫描识别流程的通用基础库