android显示大图片

前言:

最近比较焦虑,感觉移动端的前景不太好,有些心塞。

android的如何显示大图?

因为虚拟机对手机内存的限制,超过了就会内存溢出导致程序崩溃,假如我们必须要显示一个大图怎么办呢?

一般有两个方案:

1.将图片分割显示

2.将图片用webview去显示

网上大多是第一种的解决方案,而第二种方案则少,所以这边讲解下第二种方案

第二种方案分两种

  1. 1.网络的url图片,直接
<img src= “url”> 标签就行,比较简单
  1. 2.加载放在本地的图片

    假如图片放在drawable下面

   首先写一个工具类

 /**
  * @description 将bitmap转成base64
  * @date: 2019/5/6
  * @author: MR.su
  */
public static String bitmapToBase64(Bitmap bitmap) {
    String result = null;
    ByteArrayOutputStream baos = null;
    try {
        if (bitmap != null) {
            baos = new ByteArrayOutputStream();
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
            baos.flush();
            baos.close();
            byte[] bitmapBytes = baos.toByteArray();
            result = Base64.encodeToString(bitmapBytes, Base64.DEFAULT);
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (baos != null) {
                baos.flush();
                baos.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return result;
}

/**
 * base64转为bitmap
 */
public static Bitmap base64ToBitmap(String base64Data) {
    byte[] bytes = Base64.decode(base64Data, Base64.DEFAULT);
    return BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
}
String imgBase64 = Base64ToBitmap.bitmapToBase64( BitmapFactory.decodeResource(getResources(), R.drawable.adj));

上面的代码意思是

BitmapFactory.decodeResource(getResources(), R.drawable.adj)     //将本地的drawable图片转成bitmap

Base64ToBitmap.bitmapToBase64                                                       //调用工具类将bitmap转成base64

标签

<img src=\"data:image/png;base64, imgBase64\" />             //imgBase64就是将bitmap转成base64的字符串

总结:

方法比较简单,但是很使用

猜你喜欢

转载自blog.csdn.net/xueyoubangbang/article/details/89881969