从 grafika 示例开始,我试图将相机流捕获到文件。在编码之前,我需要应用一些转换:
- 旋转图像
我可以做这个:
Matrix.translateM(transform, 0, 0.5F, 0.5F, 0);
Matrix.rotateM(transform, 0, rotation, 0, 0, 1);
Matrix.translateM(transform, 0, -0.5F, -0.5F, 0);
- 应用比例和平移
图像沿一个轴压缩。所以我必须沿着那个轴缩放,而不是平移一点,以便我们看到中间部分。同样,我可以这样做:
float scaleX = mScaleX; // < 1 or == 1
float scaleY = mScaleY; // < 1 or == 1
float scaleTranslX = (1F - scaleX) / 2F;
float scaleTranslY = (1F - scaleY) / 2F;
Matrix.translateM(transform, 0, scaleTranslX, scaleTranslY, 0);
Matrix.scaleM(transform, 0, scaleX, scaleY, 1);
翻译是为了在最终结果中获得“中心裁剪”,因为编码器只会捕获在给定视口中绘制的内容。
但是,我在将这两个操作结合在一起时迷失了方向。我在这上面花了几个小时,而我的研究并没有帮助。任何人都可以解决这个问题吗?