通常网络传输图片采用base64 格式,因此在编程时遇到了药将图片文件读取成base64 的格式,和将base64格式的字符串转化为图片的情况

下面是我写的工具类

注:base64转图片时需要先去掉前缀

package com.sharetime.util;import com.ctc.wstx.util.StringUtil;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;import java.io.*;/*** @Author: yd* @Date: 2018/7/29 11:05* @Version 1.0*/
public class Base64Utils {/*** 将图片文件转换成base64字符串,参数为该图片的路径** @param imageFile* @return java.lang.String*/public String ImageToBase64(String imageFile) {InputStream in = null;byte[] data = null;// 读取图片字节数组try {in = new FileInputStream(imageFile);data = new byte[in.available()];in.read(data);in.close();} catch (IOException e) {e.printStackTrace();}// 对字节数组Base64编码BASE64Encoder encoder = new BASE64Encoder();if (data != null) {return "data:image/jpeg;base64," + encoder.encode(data);// 返回Base64编码过的字节数组字符串}return null;}/*** 将base64解码成图片并保存在传入的路径下* 第一个参数为base64 ,第二个参数为路径** @param base64, imgFilePath* @return boolean*/public boolean Base64ToImage(String base64, String imgFilePath) {// 对字节数组字符串进行Base64解码并生成图片if (base64 == null) // 图像数据为空return false;BASE64Decoder decoder = new BASE64Decoder();try {// Base64解码byte[] b = decoder.decodeBuffer(base64);for (int i = 0; i < b.length; ++i) {if (b[i] < 0) {// 调整异常数据b[i] += 256;}}OutputStream out = new FileOutputStream(imgFilePath);out.write(b);out.flush();out.close();return true;} catch (Exception e) {return false;}}/*** 用来测试工具类是否成功** @param args* @return void*/public static void main(String[] args) {String path = "C:/Users/YD/Pictures/1.jpg";Base64Utils base64Utils = new Base64Utils();String s = base64Utils.ImageToBase64(path);System.out.println(s);String newpath = "C:/Users/YD/Pictures/asd.jpg";boolean b = base64Utils.Base64ToImage(s, newpath);System.out.println(b);}}

注:还需要注意的一点是,在网站上src=base64的格式也可以将图片显示出来,但是在图片的前面需要加入标识data:image/jpeg;base64

因此在服务端获取到网页传过来的base64字符串时要注意是否包含前缀如果包含前缀则需要去掉在进行转换

image为从网络传过来的base64格式的字符串

int i = image.indexOf("base64,")+7;//获取前缀data:image/gif;base64,的坐标String newImage = image.substring(i, image.length());//去除前缀

base64与图片文件之间的互转相关推荐

  1. 图片文件转base64和base64转图片文件

    一.图片文件转base64 function imgFileToBase64(){//$img = 'D:\xampp\git-new\wshifu-apps\service\assets\logo_ ...

  2. C#PDF转图片,支持批量转,支持PDF文件,BASE64转换为图片文件,BASE64,支持合并PDF为一张图

    大家好呀,我是一名Java开发工程师,最近公司项目遇到PDF转图片超时问题,经过排查,PDF文件大概在2-3M左右,使用pdfbox转换大概7-8秒(并且存在转换空白的问题),使用icepdf更长,经 ...

  3. ​h5文件格式详解及h5文件与图片文件之间的相互转换(python实现)

    背景:h5文件详解 H5文件是层次数据格式第5代的版本(Hierarchical Data Format,HDF5),它是用于存储科学数据的一种文件格式和库文件.由美国超级计算中心与应用中心研发的文件 ...

  4. 前端 base64与图片相互转换

    base64转图片 如下图:(后端返回的数据) <img :src="baseImg" >let baseImg = "" this.baseImg ...

  5. Java 视频文件、图片文件互转Base64编码(springboot)

    目录 1.导入依赖 2.视频转Base64 2.1 视频转Base64输出txt文本 2.2 Base64转视频 3.图片转Base64 3.1 图片转Base64 3.2 Base64转图片 1.导 ...

  6. Base64把图片、文件转码成字符串(互转)

    文件Base64以后会翻倍的涨,例如一张52kb的图片 base64以后string文件大小为185kb,在通过string转回图片为135kb 图片转文字: UIImage *_originImag ...

  7. base64和图片的互转(HTML5的File实现)

    base64和图片的互转(HTML5的File实现) 2013-08-02       0 个评论       作者:qklin 收藏     我要投稿 刚接触到一个内联图片的概念,内联图片即使把图片 ...

  8. 2020-12-11 图片格式互转:base64、PIL Image opencv cv2互转

    图片格式互转:base64.PIL Image opencv cv2互转 base64 to PIL Image import base64 from io import BytesIO from P ...

  9. Misc-----[2021祥云杯初赛]鸣雏恋 提取压缩包文件图片名8个为一组 转ASC码base64转图片

    得到一个.docx文件 目前大部分的.docx文档都是 以压缩的形式存在的 修改末尾为zip 查看 在这一步中 我之前直接把这个鸣雏恋.docx给foremost 分离了,分离后的压缩包打开后没找到 ...

最新文章

  1. 不用鼠标,只用键盘,你还能操作自如吗?
  2. postgresSQL 实现数据修改后,自动更新updated_date/ts等字段
  3. php hsetnx,HSETNX命令_视频讲解_用法示例-redis编程词典-php中文网
  4. Android 获取app 地址,获取手机设备信息、app版本信息、ip地址
  5. C# WinForm开发系列 - 开篇
  6. 表单的提交方式POST和GET
  7. bs架构多用户访问_Spark架构
  8. 25年面试官首次揭秘——世界500强面试题之微软面试题
  9. 人工智能究竟能否实现?
  10. canvas 加载图片
  11. MySQL table 添加_「primarykey」MySQL中为table添加primary key的两种方法 - seo实验室
  12. 美国飞机安全事件频发:背后黑手竟然是5G?
  13. android局域网设备查看器,局域网查看工具(LanSee)
  14. TestNG 单元测试框架的使用
  15. pth(pass the hash)哈希传递攻击
  16. java word水印
  17. bootstrap—预定义样式风格
  18. css画横线箭头_CSS绘制箭头
  19. 收集整理一些常用的PHP类库, 资源以及技巧. 以便在工作中迅速的查找所需...
  20. 机器人战争显示服务器连接,战争机器人总是显示无法连接网络

热门文章

  1. 数量金融学(5):CPPI策略
  2. CSS3 3D空间转换
  3. ieee latex 双栏_IEEE 投稿Latex设置
  4. 详解react生命周期
  5. layer.alert 点击确认按钮后跳转指定地址网页
  6. 正在连接 127.0.0.1:20880 无法打开到主机的连接。 在端口 23: 连接失败
  7. ubuntu中切换窗口 alt+tab
  8. qq登陆时 (错误码:0x00000037) 的解决方法
  9. jupyter内核无法连接,出现error,代码无法运行解决办法
  10. 在多声卡的情况下使用修改注册表的方法设置默认声卡