百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

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

wptr33 2025-01-07 16:17 35 浏览

如何把网络图片转换成base64,或者把本地图片转换成base64,下面就给大家分享用Java实现图片转换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学习方法,可以关注“武汉千锋”微信公众号!

相关推荐

Linux文件系统操作常用命令(linux文件内容操作命令)

在Linux系统中,有一些常用的文件系统操作命令,以下是这些命令的介绍和作用:#切换目录,其中./代表当前目录,../代表上一级目录cd#查看当前目录里的文件和文件夹ls#...

别小看tail 命令,它难倒了技术总监

我把自己以往的文章汇总成为了Github,欢迎各位大佬star...

lnav:基于 Linux 的高级控制台日志文件查看器

lnav是一款开源的控制台日志文件查看器,专为Linux和Unix-like系统设计。它通过自动检测日志文件的格式,提取时间戳、日志级别等关键信息,并将多个日志文件的内容按时间顺序合并显示,...

声明式与命令式代码(声明模式和命令模式)

编程范式中的术语和差异信不信由你,你可能已经以开发人员的身份使用了多种编程范例。因为没有什么比用编程理论招待朋友更有趣的了,所以这篇文章可以帮助您认识代码中的流行范例。命令式编程命令式编程是我们从As...

linux中的常用命令(linux常用命令和作用)

linux中的常用命令linux中的命令统称shell命令shell是一个命令行解释器,将用户命令解析为操作系统所能理解的指令,实现用户与操作系统的交互shell终端:我们平时输入命令,执行程序的那个...

提高工作效率的--Linux常用命令,能够决解95%以上的问题

点击上方关注,第一时间接受干货转发,点赞,收藏,不如一次关注评论区第一条注意查看回复:Linux命令获取linux常用命令大全pdf+Linux命令行大全pdf...

如何限制他人操作自己的电脑?(如何控制别人的电脑不让发现)

这段时间,小猪罗志祥正处于风口浪尖,具体是为啥?还不知道的小伙伴赶紧去补一下最近的娱乐圈八卦~简单来说,就是我们的小罗同事,以自己超强的体力,以及超强的时间管理能力,重新定义了「多人运动」的含义,重新...

最通俗易懂的命令模式讲解(命令模式百科)

我们先不讲什么是命令模式,先通过一个场景来引出命令模式,看看命令模式能解决什么样的问题。现在有一个渣男张三,他有还几个女朋友,你现在是不是还是单身狗,你就说你气不气?然后他需要每天分别叫几个女朋友起床...

互联网大厂后端必看!Spring Boot 中Runtime执行与停止命令?

你是否曾在使用SpringBoot开发项目时,遇到需要执行系统命令的场景?比如调用脚本进行文件处理,又或是启动外部程序?很多后端开发人员会使用Processexec=Runtime.get...

Linux 常用命令(linux常用的20个命令面试)

日志排查类操作命令...

Java字节码指令:if_icmpgt(0xA3)(java字节码使用的汇编语言)

if_icmpgt是Java字节码中的一条条件跳转指令,其全称是"IfIntegerCompareGreaterThan"。它用于比较两个整数值的大小。如果栈顶的第一个...

外贸干货|如何增加领英的曝光量和询盘

#跨境电商#...

golang执行linux命令(golang调用shell脚本)

需求需要通过openssl生成rsa秘钥,然后保存该秘钥。代码实例packagemainimport("io/ioutil""bytes"&...

LINUX磁盘挂载(linux磁盘挂载到windows)

1、使用root用户查看磁盘挂载情况:fdisk-l2、使用df查看当前磁盘挂载情况,根据和fdisk-l的结果进行对比,查看还有那些磁盘未使用3、挂载:mount磁盘挂载路径...

Linux命令学习——nl命令(linux ln命令的使用)

nl命令主要功能为每一个文件添加行号,每一个输入的文件添加行号后发送到标准输出。当没有文件或文件为-时,读取标准输入...