LibYuv:基于Google的libyuv编译封装的YUV转换工具库,主要用途是在各种YUV与RGB之间进行相互转换、裁减、旋转、缩放、镜像等。
你也可以直接下载 演示App 体验效果
-
在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)
/**
* 将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 一个简化扫描识别流程的通用基础库
- libyuv初始版本
如果您喜欢libyuv,或感觉libyuv帮助到了您,可以点右上角“Star”支持一下,您的支持就是我的动力,谢谢 😃
您也可以扫描下面的二维码,请作者喝杯咖啡 ☕
我的博客 | GitHub | Gitee | CSDN | 博客园 |
---|---|---|---|---|
Jenly's Blog | jenly1314 | jenly1314 | jenly121 | jenly |
微信公众号 | Gmail邮箱 | QQ邮箱 | QQ群 | QQ群 |
---|---|---|---|---|
Jenly666 | jenly1314 | jenly1314 | 20867961 | 64020761 |