分享Java实现图片转换base64的两种方法-知了汇智

分享Java实现图片转换base64的两种方法

知了堂作为成都天府软件园重点扶持的互联网+教育培训机构,在成都it培训界内一直拥有着较高声誉,长期为软件园内600余家企业提供人才输出及培训。今天我们就为大家带来知了堂老师关于Java实现图片转换base64的两种方法分享。

如何把网络图片转换成base64,或者把本地图片转换成base64,希望大家共勉,以后尽量避免:

  下面先介绍第一种:把网络图片转换成Base64字符串


把网络图片转换成Base64字符串

  到此,第一种方法我就介绍完了,至于有什么问题我会再后面说明的.
 

  第二种:把本地图片转换成base64


把本地图片转换成base64

  由此两种方法都介绍完了,下面附上源码:

  package zhang;
  import java.io.ByteArrayOutputStream;
  import java.io.FileInputStream;
  import java.io.IOException;
  import java.io.InputStream;
  import java.net.HttpURLConnection;
  import java.net.URL;
  public class ImageToBase64 {
  public static void main(String[] args) {
  //第一个:把网络图片装换成Base64
  String netImagePath = "网络图片路径";
  //下面是网络图片转换Base64的方法
  String strNetImageToBase64 = NetImageToBase64(netImagePath);
  System.out.println("网络图片转换Base64:"+strNetImageToBase64);
  //下面是本地图片转换Base64的方法
  String imagePath = "本地图片路径";
  String strImageToBase64 =ImageToBase64(imagePath);
  System.out.println("本地图片转换Base64:"+strNetImageToBase64);
  }
  /**
  * 网络图片转换Base64的方法
  * @param netImagePath
  */
  private static String NetImageToBase64(String netImagePath) {
  ByteArrayOutputStream data = new ByteArrayOutputStream();
  try {
  // 创建URL
  URL url = new URL(netImagePath);
  byte[] by = new byte[1024];
  // 创建链接
  HttpURLConnection conn = (HttpURLConnection) url.openConnection();
  conn.setRequestMethod("GET");
  conn.setConnectTimeout(5000);
  InputStream is = conn.getInputStream();
  // 将内容读取内存中
  int len = -1;
  while ((len = is.read(by)) != -1) {
  data.write(by, 0, len);
  }
  // 关闭流
  is.close();
  } catch (IOException e) {
  e.printStackTrace();
  }
  // 对字节数组Base64编码
  BASE64Encoder encoder = new BASE64Encoder();
  return encoder.encode(data.toByteArray());
  }
  /**
  * 本地图片转换Base64的方法
  * @param imgPath
  */
  public static String ImageToBase64(String imgPath) {
  InputStream in = null;
  byte[] data = null;
  // 读取图片字节数组
  try {
  in = new FileInputStream(imgPath);
  data = new byte[in.available()];
  in.read(data);
  in.close();
  } catch (IOException e) {
  e.printStackTrace();
  }
  // 对字节数组Base64编码
  BASE64Encoder encoder = new BASE64Encoder();
  // 返回Base64编码过的字节数组字符串
  return encoder.encode(data);
  }
  }

  刚刚说了,把图片转成base64是有一定的问题的,下面分析一下:

  1.转换时间过长,影响性能,如果多张图片转码,可能会卡顿

  2.如果图片过大,转成字符串,无法转换完全,因为字符串有最大长度限制65534字节;

  第一种涉及到性能优化问题,可以开启子线程,异步多线程处理,如需了解请查看线程方面的问题,我后面也会写出具体方案.

  第二种可以把图片进行压缩,但是只能解燃眉之急,最好的方法还是换种方式处理图片;
 

  版权声明:本文来源于网络,由知了堂搜集整理,仅供大家学习Java时使用
 

成都it培训,就找知了堂。

好啦,今天的分享就到这儿啦,欢迎持续关注,小姐姐会继续更新!
 

项目教学·项目驱动

132 2811 3191
预约免费试学
点击咨询
预约试学