Как сохранить растровое изображение из GLSurfaceView (только растровое изображение, а не целая текстура)

Я использую этот код для многократного воздействия на растровое изображение, которое находится на GlSurfaceView. apply-effects-on-image-using-effects

Теперь я хочу сохранить растровое изображение. Они предоставили код для сохранения растрового изображения, но при этом весь GlSurfaceView будет сохранен как растровое изображение. Вместо этого я хочу сохранить только область растрового изображения, чтобы сохранить как изображение.

Существует метод, который принимает пиксели и делает растровое изображение, а также создает изображение. например:

  public Bitmap takeScreenshot(GL10 mGL) {
  final int mWidth = mEffectView.getWidth();
  final int mHeight = mEffectView.getHeight();
  IntBuffer ib = IntBuffer.allocate(mWidth * mHeight);
  IntBuffer ibt = IntBuffer.allocate(mWidth * mHeight);


  mGL.glReadPixels(0, 0, mWidth, mHeight, GL10.GL_RGBA, GL10.GL_UNSIGNED_BYTE, ib);

   // Convert upside down mirror-reversed image to right-side up normal
  // image.
  for (int i = 0; i < mHeight; i++) {
   for (int j = 0; j < mWidth; j++) {
    ibt.put((mHeight - i - 1) * mWidth + j, ib.get(i * mWidth + j));
   }
  }

   Bitmap mBitmap = Bitmap.createBitmap(mWidth, mHeight, Bitmap.Config.ARGB_8888);
  mBitmap.copyPixelsFromBuffer(ibt);
  return mBitmap;
 }

Я думаю, мне нужно обновить его, а вместо этого начать с 0, 0, который должен начинаться с растровой верхней левой координаты. И это должно работать до высоты и ширины растровой карты.

Итак, с этим я могу решить проблему, но не знаю, как получить эту координату растрового изображения в GLSurfaceView.

Пожалуйста, проверьте изображение ниже для получения более подробного пояснения.

Исходное изображение:

введите описание изображения здесь

Загруженное изображение на экране эффекта:

введите описание изображения здесь

Изображение после применения эффекта и его сохранение:

введите описание изображения здесь

Это то, что я хочу.

введите описание изображения здесь

Ответ 1

Если вы можете получить размеры изображения, вы можете получить точную позицию растрового изображения.

Пусть размеры изображения x и y и получить размер экрана после этого сообщения. Пусть это будет a и b.

Ваша начальная позиция будет ((a-x)/2, (b-y)/2).

Используйте это, чтобы обрезать изображение.