zoukankan      html  css  js  c++  java
  • BaseUtIis工具类

      1 package com.yjt.utils;
      2 
      3 import sun.misc.BASE64Decoder;
      4 import sun.misc.BASE64Encoder;
      5 
      6 import java.io.*;
      7 import java.net.HttpURLConnection;
      8 import java.net.URL;
      9 import java.net.URLDecoder;
     10 
     11 /**
     12  * base64图片工具
     13  */
     14 public class Base64Utils {
     15 
     16     public static void main(String[] args) throws Exception {
     17 
     18         //本地图片地址
     19         String url = "D:\work\idea\zshop-page\target\page-designer\upload\微信图片_20180131143356.png";
     20         //在线图片地址
     21         String string = "https://imgs.9hive.cn/4da05513b44a4762849c3fe32f792aa8/201809/315dea86cf7848328ef22b97c325c8a8.png";
     22 
     23         String str = Base64Utils.ImageToBase64ByLocal(url);//本地图片转换成base64字符串
     24         String ste = Base64Utils.ImageToBase64ByOnline(string);//在线图片转换成base64字符串
     25         System.out.println(str);
     26         Base64Utils.Base64ToImage(str,"D:\work\idea\zshop-page\target\page-designer\upload\test1.jpg");
     27         Base64Utils.Base64ToImage(ste, "D:\work\idea\zshop-page\target\page-designer\upload\test2.jpg");
     28     }
     29 
     30     /**
     31      * 本地图片转换成base64字符串
     32      * @param imgFile    图片本地路径
     33      * @return
     34      * @author
     35      * @dateTime 2018-02-23 14:40:46
     36      */
     37     public static String ImageToBase64ByLocal(String imgFile) {// 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
     38         InputStream in = null;
     39         byte[] data = null;
     40         try {// 读取图片字节数组
     41             in = new FileInputStream(imgFile);
     42             data = new byte[in.available()];
     43             in.read(data);
     44             in.close();
     45         } catch (IOException e) {
     46             e.printStackTrace();
     47         }
     48         // 对字节数组Base64编码,返回Base64编码过的字节数组字符串
     49         BASE64Encoder encoder = new BASE64Encoder();
     50         return encoder.encode(data);
     51     }
     52 
     53 
     54     /**
     55      * 在线图片转换成base64字符串
     56      * @param imgURL    图片线上路径
     57      * @return
     58      * @author
     59      * @dateTime 2018-02-23 14:43:18
     60      */
     61     public static String ImageToBase64ByOnline(String imgURL) {
     62         ByteArrayOutputStream data = new ByteArrayOutputStream();
     63         try {
     64             // 创建URL
     65             URL url = new URL(imgURL);
     66             byte[] by = new byte[1024];
     67             // 创建链接
     68             HttpURLConnection conn = (HttpURLConnection) url.openConnection();
     69             conn.setRequestMethod("GET");
     70             conn.setConnectTimeout(5000);
     71             InputStream is = conn.getInputStream();
     72             // 将内容读取内存中
     73             int len = -1;
     74             while ((len = is.read(by)) != -1) {
     75                 data.write(by, 0, len);
     76             }
     77             // 关闭流
     78             is.close();
     79         } catch (IOException e) {
     80             e.printStackTrace();
     81         }
     82         // 对字节数组Base64编码
     83         BASE64Encoder encoder = new BASE64Encoder();
     84         return encoder.encode(data.toByteArray());
     85     }
     86 
     87 
     88     /**
     89      * 对字节数组字符串进行Base64解码并生成图片
     90      * @param imgStr        base64字符串
     91      * @param imgFilePath    图片存放路径
     92      * @return
     93      * @author
     94      * @dateTime 2018-02-23 14:42:17
     95      */
     96     public static boolean Base64ToImage(String imgStr,String imgFilePath) { //
     97         if (StringUtil.isBlank(imgStr)) {// 图像数据为空
     98             return false;
     99         }
    100         if(imgStr.contains("base64,")){
    101             imgStr=StringUtil.substringAfterLast(imgStr,"base64,");
    102         }
    103         BASE64Decoder decoder = new BASE64Decoder();
    104         try {// Base64解码
    105             byte[] b = decoder.decodeBuffer(imgStr);
    106             for (int i = 0; i < b.length; ++i) {
    107                 if (b[i] < 0) {// 调整异常数据
    108                     b[i] += 256;
    109                 }
    110             }
    111             OutputStream out = new FileOutputStream(imgFilePath);
    112             out.write(b);
    113             out.flush();
    114             out.close();
    115 
    116             return true;
    117         } catch (Exception e) {
    118             return false;
    119         }
    120 
    121     }
    122     
    123     public static byte[] Base64ToImage(String imgStr) { //
    124         if (StringUtil.isBlank(imgStr)) {// 图像数据为空
    125             return null;
    126         }
    127         String imgSource = "";
    128         if(imgStr.contains("base64,")){
    129             imgSource = StringUtil.substringAfterLast(imgStr,"base64,");
    130         }
    131         byte[] image = org.apache.commons.codec.binary.Base64.decodeBase64(imgSource);
    132         for (int i=0; i<image.length; i++) {
    133             if (image[i] <= -1) {
    134                 image[i] += 256;
    135             }
    136         }
    137         return image;
    138     }
    139 
    140 }
    public static String substringAfterLast(String str, String separator) {
    if (isEmpty(str)) {
    return str;
    } else if (isEmpty(separator)) {
    return "";
    } else {
    int pos = str.lastIndexOf(separator);
    return pos != -1 && pos != str.length() - separator.length() ? str.substring(pos + separator.length()) : "";
    }
    public static boolean isEmpty(CharSequence cs) {
    return cs == null || cs.length() == 0;
    }

    }
     
  • 相关阅读:
    .NET Core 调用百度 PaddleOCR 识别图文
    ASP.NET Core 查看应用状态和统计
    锐浪报表 winform程序 数据源设置为excel时提示用户名密码隐藏
    单例
    WPF 设计器一直加载一分钟才显示
    .net 5 SignalR WPF 服务端+客户端
    WPF 使用Image 捕获摄像头数据,并将image改为圆形
    Vue Element-ui Table实现动态新增和删除
    Element-UI 中使用rules验证
    @Value读取不到配置文件的值
  • 原文地址:https://www.cnblogs.com/zrboke/p/11495659.html
Copyright © 2011-2022 走看看