Масштабирование и вращение текстуры преобразования матрицы одновременно

Исходя из примеров графики я пытаюсь захватить поток с камеры в файл. Перед кодированием мне нужно применить некоторые преобразования:

  1. Повернуть изображение

Я могу сделать это:

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);
  1. Применить шкалу и перевод

Изображение сжимается вдоль одной оси. Поэтому я должен масштабировать вдоль этой оси, а затем немного перевести, чтобы мы увидели среднюю часть. Опять же, я могу сделать это следующим образом:

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);

Перевод состоит в том, чтобы получить "центральную обрезку" в конечном результате, так как кодировщик будет захватывать только то, что нарисовано в данном окне просмотра.

Тем не менее, я потерял в объединении двух операций вместе. Я потратил несколько часов на это, и то, что я исследовал, не помогло. Кто-нибудь может понять это?

0 ответов

Другие вопросы по тегам