[英]Show an image in opengl is working with pictures from gallery but from camera doesn't
我在 OpenGL 中顯示圖像時遇到了一些麻煩。
實際上,我可以在 opengl 中顯示來自畫廊的圖像。 當我嘗試從相機顯示一個時,就會出現問題。
對我來說,OpenGL 必須像在畫廊中一樣顯示來自相機的圖像。 顯然我做錯了什么。
任何幫助將不勝感激。
來自畫廊的意圖:
Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent.setType("image/");
startActivityForResult(intent, 2);
來自相機的意圖:
Intent takePic = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePic.resolveActivity(getPackageManager()) != null) {
File imagen = controler.createPhotoFile(getExternalFilesDir(Environment.DIRECTORY_PICTURES));
if (imagen != null) {
photoUri = FileProvider.getUriForFile(this, "my.fileprovider", imagen);
takePic.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
startActivityForResult(takePic, 1);
}
}
這是我的 onActivityResult,我將 URI 發送到將其轉換為 bitmap 並發送的方法。
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
switch (requestCode) {
case 1:
sendImagenPanel(photoUri);
break;
case 2:
sendImagenPanel(data.getData());
break;
}
}
}
private void sendImagenPanel(Uri uri) {
Bitmap bitmap = null;
try {
bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), uri);
} catch (IOException e) {
e.printStackTrace();
}
final Bitmap imagen = controler.getCroppedBitmap(controler.scaledBitmap(bitmap, 256));
final CasillaOG casilla = ((GLSurfacePanel) gLViewPanel).getRendererPanel().getCuboSelected();
gLViewPanel.queueEvent(new Runnable() {
@Override
public void run() {
casilla.loadNewTexture(imagen);
casilla.setImagen(imagen);
}
});
gLViewPanel.requestRender();
}
萬一有人感興趣。 我意識到問題不在於調用 OpenGL 的方法。 如果我在我的三星 Galaxy Tab A 中的 onActivityResult 作品上運行相同的代碼,但不是在相機一上,為什么我提到我的設備? 因為如果我在華為 P9 lite 上運行該應用程序,畫廊圖像也不會顯示。 在這兩種情況下,控制台上都會出現下一個問題:在沒有當前上下文的情況下調用 opengl es api(每個線程記錄一次)
搜索該問題后,我認為相機和畫廊的意圖使用 OpenGL 並且它與我自己的 OpenGL 環境發生沖突。
最后,我選擇設置一個 bitmap 字段並在 onDrawFrame 上添加紋理。 顯然,用一個 boolean 來做一次。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.