当前位置: 首页 > 面试题库 >

Base64到位图以显示在ImageView中

宇文智敏
2023-03-14
问题内容

我有这段代码,它已使用Webservice获取已经转换为字符串的BLOB图像。这是JSON输出。

{driver_name: "Anna Biendia"
 taxi_plate_no: "NUV 900"
 driver_contact_no: "09169271825"
 driver_operator: "grab"
 driver_operator_address: "987 Buendia St. California"
 image: "iVBORw0KGgoAAAANSUhEUgAACDQAAAXcCAYAAADXlEzmAAAACXBIWX..."}

这是我在android中获取JSON并将其显示在布局中的代码。除图像外,其他值也已显示。

public class DriverDetails extends Activity {
ArrayList<Objects> objectsList = new ArrayList<>();
String url = "http://192.168.1.110:8080/taxisafe3/displays/taxidetails";


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

    new Task().execute(url);
}
public class Task extends AsyncTask<String, String, String> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

    @Override
    protected String doInBackground(String... strings) {
        String content = HttpULRConnect.getData(url);
        return content;
    }

    @Override
    protected void onPostExecute(String s) {
        try {
            TextView title1 = (TextView) findViewById(R.id.textView3);
            TextView title = (TextView) findViewById(R.id.textView2);
            TextView title2 = (TextView) findViewById(R.id.textView7);
            TextView title3 = (TextView) findViewById(R.id.textView9);
            TextView title4 = (TextView) findViewById(R.id.textView11);
            ImageView image = (ImageView) findViewById(R.id.imageView2);

            JSONArray ary = new JSONArray(s);
            for (int i = 0; i < ary.length(); i++) {
                JSONObject jsonobject = ary.getJSONObject(i);
                Objects objects = new Objects();
                objects.setDriver_name(jsonobject.getString("driver_name"));
                objects.setTaxi_plate_no(jsonobject.getString("taxi_plate_no"));
                objects.setDriver_operator(jsonobject.getString("driver_operator"));
                objects.setDriver_operator_address(jsonobject.getString("driver_operator_address"));
                objects.setDriver_contact_no(jsonobject.getString("driver_contact_no"));
                objects.setImage(jsonobject.getString("image"));
                objectsList.add(objects);


                if (title1 != null){
                    title1.setText(objects.getDriver_name());
                }
                if (title != null){
                    title.setText(objects.getTaxi_plate_no());
                }
                if (title2 != null){
                    title2.setText(objects.getDriver_operator());
                }
                if (title3 != null){
                    title3.setText(objects.getDriver_operator_address());
                }
                if (title4 != null){
                    title4.setText(objects.getDriver_contact_no());
                }
                if(image != null){
                    byte[] decodedString = Base64.decode(objects.getImage(), Base64.DEFAULT);
                    Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
                    image.setImageBitmap(decodedByte);
                }
            }

        } catch (JSONException e) {
            e.printStackTrace();
        }
}
}
}

我的代码有什么问题,为什么图像没有显示在ImageView中?提前致谢。:)


问题答案:

base64 转换为 位图后

byte[] decodedString = Base64.decode(objects.getImage(), Base64.DEFAULT);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);

将位图调整为Imageview的高度和宽度

image.setImageBitmap(Bitmap.createScaledBitmap(decodedByte, image.getWidth(), image.getHeight(), false));


 类似资料:
  • 因此,在Android的ImageView中显示图像非常简单。我从图库中挑选了一张图片,保存了它到数据库的链接,然后尝试在ImageView中显示它。 我也尝试了这个小的图像不是由相机拍摄的,这是工作的。但每次我选择用手机相机拍摄的图像时,都会有一个错误: 那么,在超过300万像素的相机中,如何在我的ImageView中显示图像呢?

  • 问题内容: 我在内联显示Base64图像时遇到问题。 有人可以指出我正确的方向吗? 问题答案: 我怀疑当然是实际的base64数据,否则对我来说看起来不错。在类似方案起作用的地方查看此小提琴。您可以尝试指定字符集。 您可以尝试使用base64解码器查看base64数据是否正确。

  • 我想在JavaFX的ImageView中显示图像。图像应该从SQLite数据库中获取,并在场景加载时显示。我使用以下代码片段从数据库获取代码,并在之前创建的ImageView中显示它。但是图像没有按预期显示。我做错了吗?P. S.我测试了改变路径在两个和当读取文件从目录到。但似乎没有什么奏效。但是当我手动将一个图像文件放在src目录中并尝试读取它时,它就像一个魅力。但是我想展示一张从数据库中提取的

  • 问题内容: 在我的应用程序中,我尝试显示base64图像… 例如我有: 在网址上: 在ng-repeat循环中,我有: 但结果我看到了: 但为什么?如何显示我的图像数据? 问题答案: 如果映像来自远程服务器,则可以像下面这样在控制器中获取base64内容: 然后在视图上显示 当图像位于本地磁盘/电话上时,首先您可以从 然后将绑定为

  • 我有一个装满图像的文件夹要在我正在创建的游戏中实现,我想在窗口中显示这些。这是我迄今为止的代码。 这将是一个程序在IntelliJ/中从jar运行。“资产”文件夹与此文件位于同一目录中。我没有发现文件路径错误,所以我假设它可以找到图像,但它不会出现在屏幕上,而矩形会出现。 公平警告,我正在从头开始学习JavaFX,我发现没有太多关于事物如何工作的解释,所以这可能是一个愚蠢的问题。