[英]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.