zoukankan      html  css  js  c++  java
  • java 图片转换成base64字符串

    import java.io.ByteArrayOutputStream;

    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;

    import com.github.pagehelper.util.StringUtil;

    //import com.steward.utils.StringUtil;

    import sun.misc.BASE64Decoder;
    import sun.misc.BASE64Encoder;

    public class Base64Utils {

    /**
    * 本地图片转换成base64字符串
    *
    * @param imgFile
    * 图片本地路径
    * @return
    *
    * @author ZHANGJL
    * @dateTime 2018-02-23 14:40:46
    */
    public static String ImageToBase64ByLocal(String imgFile) {// 将图片文件转化为字节数组字符串,并对其进行Base64编码处理

    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编码过的字节数组字符串
    }

    /**
    * 图片转换
    *
    * @param imgURL
    * @return
    */
    public static String ImageToBase64ByOnline(String imgURL) {
    ByteArrayOutputStream data = new ByteArrayOutputStream();
    try {
    // 创建URL
    URL url = new URL(imgURL);
    byte[] by = new byte[1024];
    // 创建链接
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setRequestMethod("GET");
    conn.setConnectTimeout(5000);
    conn.setRequestProperty("User-Agent",
    "Mozilla/5.0 (Linux;U;Android 2.3;en-us;Nexus One Build/FRF91)AppleWebKit/999+(KHTML, like Gecko)Version/4.0 Mobile Safari/999.9");
    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();
    return null;
    }
    // 对字节数组Base64编码
    BASE64Encoder encoder = new BASE64Encoder();
    return encoder.encode(data.toByteArray());
    }

    /**
    * 在线图片转换成base64字符串
    *
    * @param imgURL
    * 图片线上路径
    * @return
    *
    * @author ZHANGJL
    * @dateTime 2018-02-23 14:43:18
    */
    public static String ImageToBase64ByOnlineMobile(String imgURL) {
    ByteArrayOutputStream data = new ByteArrayOutputStream();
    try {
    // 创建URL
    URL url = new URL(imgURL);
    byte[] by = new byte[1024];
    // 创建链接
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setRequestMethod("GET");
    conn.setConnectTimeout(5000);
    conn.setRequestProperty("User-Agent",
    "Mozilla/5.0 (Linux;U;Android 2.3;en-us;Nexus One Build/FRF91)AppleWebKit/999+(KHTML, like Gecko)Version/4.0 Mobile Safari/999.9");
    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();
    return null;
    }
    // 对字节数组Base64编码
    BASE64Encoder encoder = new BASE64Encoder();
    return encoder.encode(data.toByteArray());
    }

    /**
    * base64字符串转换成图片
    *
    * @param imgStr
    * base64字符串
    * @param imgFilePath
    * 图片存放路径
    * @return
    *
    * @author ZHANGJL
    * @dateTime 2018-02-23 14:42:17
    */
    public static boolean Base64ToImage(String imgStr, String imgFilePath) { // 对字节数组字符串进行Base64解码并生成图片
    if (StringUtil.isEmpty(imgStr)) // 图像数据为空
    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;
    }
    }

    OutputStream out = new FileOutputStream(imgFilePath);
    out.write(b);
    out.flush();
    out.close();
    return true;
    } catch (Exception e) {
    return false;
    }
    }

    }

  • 相关阅读:
    对象的存在是因为别人要用它
    图书馆借书程序我的分析
    版权迷思
    第四章 算法
    不可持续的天才教育
    第一章 你要做什么?
    win8 开发新格局分析
    水果机的几率设计
    我的理想
    windows 8,微软创新之路
  • 原文地址:https://www.cnblogs.com/lixxx/p/9890301.html
Copyright © 2011-2022 走看看