java 实现 :Base64字符串 和 图片 之间的相互转换

    xiaoxiao2021-03-25  128

    写这篇文章呢   主要是记录一下刚做过的一个很简单的功能,曲曲折折呀!

    1.在线将Base64字符转和图片相互转换:http://imgbase64.duoshitong.com/

    2.图片转Base64字符串:

    // 图片转化成base64字符串---将图片文件转化为字节数组字符串,并对其进行Base64编码处理 public static String GetImageBase64Str() {// String imgFile = "d://one.jpg";// 待处理的图片 InputStream in = null; byte[] data = null; // 读取图片字节数组 try { in = new FileInputStream(imgFile); data = new byte[in.available()]; in.read(data); in.close(); } catch (IOException e) { e.printStackTrace(); } // 对字节数组Base64编码 BASE64Encoder encoder = new BASE64Encoder(); return encoder.encode(data);// 返回Base64编码过的字节数组字符串 } 返回结果:

    CkGZSpVSHONu3dnB9OmTXfh4041LzvtprbXz/P1POrSnFJw25rNNX011b6ef/Dno2iTghEUneRnkq2eeDgE4yB0/yPRdd2XLZRW11rbz/r5ml2436tfp5Pc9RtpSyhAWVmwoA5+Y8LxnkbsZ5PB57V0S laKa1v5eV+/6nDrrfe7NDqz4LfImw5GDuwQ+T35HGOme+a46k3NdOZbdrffe5rTpqd276Po/J/1/wSno0Qja7d8qjTyMGz2LE5Y9T3z+f0ly5bSg05Ravfbz8++56NebjTjCMl72lt+y++9tH0fqeweH rf7TcrdMCy2UUURYH5Wmni+XIxyRxgcY9euftchw0KnLXtLmdm7vS997br9X2PzHifGU+WWHjP39........

    2.将Base64字符串转换为图片:

    // base64字符串转化成图片---对字节数组字符串进行Base64解码并生成图片 public static boolean CreateImage(String imgStr) { if (imgStr == null) // 图像数据为空 return false; BASE64Decoder decoder = new BASE64Decoder(); try { // Base64解码 byte[] b = decoder.decodeBuffer(imgStr); for (int i = 0; i < b.length; ++i) { if (b[i] < 0) {// 调整异常数据 b[i] += 256; } } // 生成jpeg图片 String imgFilePath = "d://two.jpg";// 新生成的图片 OutputStream out = new FileOutputStream(imgFilePath); out.write(b); out.flush(); out.close(); return true; } catch (Exception e) { return false; } } 执行结果:在d盘生成一样 two.jpg 的图片  ,内容其实就是one.jpg,这就说明正确了。

    3.但是前台后合作,往往并不是那么愉快,前台传给你了参数,但是参数错误;

      现在看一组,我在http://imgbase64.duoshitong.com/   生成 Base64的字符串,格式是这样的:

    data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAzMAAAHjCAIAAACYaNbnAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4nOzdd1g UV9cA8DO7Q1dsICBio6hIjBXBaGxYCBaMRE1Ro0IEUURFo4kllqgh2EBUAsaS5I0mEFE0oAHLpxFrNAo2WIwIUm2owO7OzP3+mN1lKy6wKOr5PfMku7Mzd+4UmbPn3rlLEUIAIYQQ Qgg1AIJXXQGEEEIIISSDkRlCCCGEUEOBkRlCCCGEUEOBkRlCCCGEUEOBkRlCCCGEUENB9erV61XXASGEEELo9VZYWMgwTEFBQR3LoXDUDIQQQgihOmJZ9s6DxwM/mSy+drGkqKjW5 dAxh/81YLUQQgghhN5ayQkJN+4XWdvY1Do4oymgDFsnhBBCCKG3U........ 字符串是以 : “data:image/png;base64,”  开头的,这个码是正确的,但是java是不能正确解析的,前台传给后台的时候,一定要截掉才对(不截也能解析,但是保存成图片后,报一个  文件损坏的错误   )。  如果是后台自己获取图片的Base64的字符串,就不会发生这种情况。

     
    转载请注明原文地址: https://ju.6miu.com/read-13047.html

    最新回复(0)