【问题标题】:How to get byte Image From url in Android如何从 Android 中的 url 获取字节图像
【发布时间】:2016-01-05 21:09:38
【问题描述】:

我是 android 新手。图像以 Base64 格式存储在服务器中。那么我如何将它从 server 获取到 My Project 并使用 Json 对象设置为我的 ImageView。 请帮帮我

任何帮助将不胜感激

【问题讨论】:

标签: java android json android-studio


【解决方案1】:

试试这个:

先将Url转为byte[]:

byte[] bitmapdata = getByteArrayImage(url);

方法:

private byte[] getByteArrayImage(String url){
         try {
                 URL imageUrl = new URL(url);
                 URLConnection ucon = imageUrl.openConnection();

                 InputStream is = ucon.getInputStream();
                 BufferedInputStream bis = new BufferedInputStream(is);

                 ByteArrayBuffer baf = new ByteArrayBuffer(500);
                 int current = 0;
                 while ((current = bis.read()) != -1) {
                         baf.append((byte) current);
                 }

                 return baf.toByteArray();
         } catch (Exception e) {
                 Log.d("ImageManager", "Error: " + e.toString());
         }
         return null;
    }

现在将 byte[] 转换为位图

Bitmap bitmap = BitmapFactory.decodeByteArray(bitmapdata , 0, bitmapdata .length);

并将您的位图设置为您的 ImageView:

img= (ImageView) findViewById(R.id.imgView);
img.setImageBitmap(bitmap );

【讨论】:

  • 他想从 URL 设置图像,你的代码是如何工作的
【解决方案2】:

试试这个:

URL u = new URL(content);
openStream = u.openStream();
int contentLength = openStream.available();
byte[] binaryData = new byte[contentLength];
openStream.read(binaryData);
openStream.close();

【讨论】:

    【解决方案3】:

    我找到了简单的解决方案:

    byte[] img = Base64.decode(userHeader.GetImage(), Base64.DEFAULT);
                    Bitmap bitmap = BitmapFactory.decodeByteArray(img, 0, img.length);
                    imageww.setImageBitmap(getCircleBitmap(bitmap));
    

    【讨论】:

      【解决方案4】:

      使用 Apache 的 commons-io-2.5 lib 我们可以使用这个函数 IOUtils.toByteArray(is)

      public static String getByteArrayFromURL(final  String url) {
              String base64Image = "";
              ExecutorService executor = Executors.newSingleThreadExecutor();
              Future<String> result = executor.submit(new Callable<String>() {
                  public String call() throws Exception {
                      try {
      
                          URL imageUrl = new URL(url);
                          URLConnection ucon = imageUrl.openConnection();
                          InputStream is = ucon.getInputStream();
                          return Base64.encodeToString(IOUtils.toByteArray(is), Base64.NO_WRAP);
                      } catch (Exception e) {
      
                          e.printStackTrace();
                      }
                      return null;
                  }
              });
      
              try {
                  base64Image = result.get();
              } catch (Exception exception) {
                  exception.printStackTrace();
              }
              return base64Image;
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-26
        • 1970-01-01
        • 2020-07-19
        • 2019-04-23
        • 1970-01-01
        • 2016-11-20
        相关资源
        最近更新 更多