我还是Android的新手,想知道是否存在从Input Stream加载图像的正确方法。
如果我直接从数据库中加载图像,该图像将返回图像,没有任何问题。 这是我的代码,用于从数据库设置ImageView位图:
varIDCardImageBinary = rs.getBinaryStream("IDCardImage");
classMyData.setDataInputStream(varIDCardImageBinary,"IDCardImage"); // Save Binary to a variable inside my Class
varimgIDCardView.setImageBitmap(BitmapFactory.decodeStream(classMyData.getInputStream("IDCardImage")));
上面的代码工作正常,并且您可以看到。我实际上在将图像保存到变量之后调用该图像。
如果类中的变量不为空,我还将放置该函数,则将通过该变量设置ImageView位图,而无需再次从数据库调用。这是我的调用图片的代码:
varIDCardImageBinary = classMyData.getInputStream("IDCardImage");
varimgIDCardView.setImageResource(0);
varimgIDCardView.setImageBitmap(BitmapFactory.decodeStream(varIDCardImageBinary));
由于某种原因,ImageView仍然空白,我也尝试了下面的代码来查看变量是否为空:
Toast.makeText(DocumentAccountActivity.this, "Loaded From Class " + varIDCardImageBinary.toString(), Toast.LENGTH_SHORT).show();
但是结果根本不是空的。即使如此,ImageView仍返回空白。我设置位图有什么问题吗?正确的调用方式是什么?
已编辑:
我也尝试过像primo建议那样使用Glide,但是结果仍然相同。 这是我的代码:
varIDCardImageBinary = classMyData.getInputStream("IDCardImage");
Glide.with(DocumentAccountActivity.this)
.asBitmap().load(varIDCardImageBinary).into(varimgIDCardView);
以防万一,我是否直接从数据库中调用图像。它工作正常。但是我不希望我的客户每次打开活动时都从数据库加载所有数据。