• JAVA将图片(本地或者网络资源)转为Base64字符串,将base64字符串存储为本地图片


    网络资源代码

    import java.io.ByteArrayOutputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;


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

    /**
    * 将网络图片转成Base64码,此方法可以解决解码后图片显示不完整的问题
    * @param imgURL图片地址。
    * 例如:http://***.com/271025191524034.jpg
    * @return
    */
    public static String imgBase64(String imgURL) {
    ByteArrayOutputStream outPut = new ByteArrayOutputStream();
                    byte[] data = new byte[1024];
            try {  
                // 创建URL  
                URL url = new URL(imgURL);  
                // 创建链接  
                HttpURLConnection conn = (HttpURLConnection) url.openConnection();  
                conn.setRequestMethod("GET");  
                conn.setConnectTimeout(10 * 1000);  

                if(conn.getResponseCode() != HttpURLConnection.HTTP_OK) {
                return "fail";//连接失败/链接失效/图片不存在
                }
                InputStream inStream = conn.getInputStream();  
                int len = -1;
                while ((len = inStream.read(data)) != -1) {
                outPut.write(data, 0, len);
                }
                inStream.close();  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
            // 对字节数组Base64编码  
            BASE64Encoder encoder = new BASE64Encoder(); 
            return encoder.encode(outPut.toByteArray()); 
    }

    本地图片转base64

    public static String GetImageStr(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编码过的字节数组字符串
    }


    Base64解码并生成图片 


    public static boolean GenerateImage(String base64str,String savepath)
    { //对字节数组字符串进行Base64解码并生成图片
    if (base64str == null) //图像数据为空
    return false;
    // System.out.println("开始解码");
    BASE64Decoder decoder = new BASE64Decoder();
    try
    {
    //Base64解码
    byte[] b = decoder.decodeBuffer(base64str);
    // System.out.println("解码完成");
    for(int i=0;i<b.length;++i)
    {
    if(b[i]<0)
    {//调整异常数据
    b[i]+=256;
    }
    }
    // System.out.println("开始生成图片");
    //生成jpeg图片
    OutputStream out = new FileOutputStream(savepath);
    out.write(b);
    out.flush();
    out.close();
    return true;
    }
    catch (Exception e)
    {
    return false;
    }
    }

  • 相关阅读:
    Elasticsearch Server,2nd Edition pdf 翻译 中文
    为什么氦气会改变人的音色?
    intellij 文件太大,无法code assistant
    intellij idea rearrange code
    static变量、static方法之间的异同
    linux top 各个标识的含义 详解
    JAVA面向对象编程课程设计——多人扫雷对战
    递归法创建二叉树
    线性表总结
    线性表总结
  • 原文地址:https://www.cnblogs.com/momo1210/p/9708785.html
Copyright © 2020-2023  润新知