Beschneiden der Kameravorschau für TextureView

Ich habe eine TextureView mit einer festen Breite und Höhe und möchte eine Kamera-Vorschau darin anzeigen. Ich muss die Kameravorschau zuschneiden, damit sie in meiner TextureView nicht gestreckt aussieht. Wie beschneide ich? Wenn ich OpenGL verwenden muss, wie binde ich die Oberflächentextur an OpenGL und wie schneide ich mit OpenGL zu?

public class MyActivity extends Activity implements TextureView.SurfaceTextureListener 
{

   private Camera mCamera;
   private TextureView mTextureView;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_options);

    mTextureView = (TextureView) findViewById(R.id.camera_preview);
    mTextureView.setSurfaceTextureListener(this);
}

@Override
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
    mCamera = Camera.open();

    try 
    {
        mCamera.setPreviewTexture(surface);
        mCamera.startPreview();
    } catch (IOException ioe) {
        // Something bad happened
    }
}

@Override
public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
    mCamera.stopPreview();
    mCamera.release();
    return true;
}

@Override
public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {
}

@Override
public void onSurfaceTextureUpdated(SurfaceTexture surface)
 {
    // Invoked every time there's a new Camera preview frame
 }
}

Nachdem ich die Vorschau korrekt durchgeführt habe, muss ich in der Lage sein, die Pixel in der Mitte des zugeschnittenen Bildes in Echtzeit zu lesen.

Antworten auf die Frage(7)

Ihre Antwort auf die Frage