从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);
翻译是为了在最终结果中获得“中心裁剪”,因为编码器将仅捕获在给定视口中绘制的内容。
但是,我不知道将这两种操作结合在一起。我已经花了几个小时,而我的研究却无济于事。 谁能解决这个问题?