打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Java对网络图片/本地图片转换成Base64编码和解码

一、将本地图片转换成Base64编码字符串

/** * 将本地图片转换成Base64编码字符串 * * @param imgFile 图片目录路径 * @return */ public static String getImgFileToBase64(String imgFile) { //将图片文件转化为字节数组字符串,并对其进行Base64编码处理 InputStream inputStream = null; byte[] buffer = null; //读取图片字节数组 try { inputStream = new FileInputStream(imgFile); int count = 0; while (count == 0) { count = inputStream.available(); } buffer = new byte[count]; inputStream.read(buffer); } catch (IOException e) { e.printStackTrace(); } finally { if (inputStream != null) { try { // 关闭inputStream流 inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } // 对字节数组Base64编码 return new BASE64Encoder().encode(buffer); }

二、将网络图片转换成Base64编码字符串

/**     * 将网络图片转换成Base64编码字符串     *     * @param imgUrl 网络图片Url     * @return     */    public static String getImgUrlToBase64(String imgUrl) {        InputStream inputStream = null;        ByteArrayOutputStream outputStream = null;        byte[] buffer = null;        try {            // 创建URL            URL url = new URL(imgUrl);            // 创建链接            HttpURLConnection conn = (HttpURLConnection) url.openConnection();            conn.setRequestMethod('GET');            conn.setConnectTimeout(5000);            inputStream = conn.getInputStream();            outputStream = new ByteArrayOutputStream();            // 将内容读取内存中            buffer = new byte[1024];            int len = -1;            while ((len = inputStream.read(buffer)) != -1) {                outputStream.write(buffer, 0, len);            }            buffer = outputStream.toByteArray();        } catch (IOException e) {            e.printStackTrace();        } finally {            if (inputStream != null) {                try {                    // 关闭inputStream流                    inputStream.close();                } catch (IOException e) {                    e.printStackTrace();                }            }            if (outputStream != null) {                try {                    // 关闭outputStream流                    outputStream.close();                } catch (IOException e) {                    e.printStackTrace();                }            }        }        // 对字节数组Base64编码        return new BASE64Encoder().encode(buffer);    }

三、将网络链接图片或者本地图片文件转换成Base64编码字符串(就是对上面的两种进行整合)

/** * 将网络链接图片或者本地图片文件转换成Base64编码字符串 * * @param imgStr 网络图片Url/本地图片目录路径 * @return */ public static String getImgStrToBase64(String imgStr) { InputStream inputStream = null; ByteArrayOutputStream outputStream = null; byte[] buffer = null; try { //判断网络链接图片文件/本地目录图片文件 if (imgStr.startsWith('http://') || imgStr.startsWith('https://')) { // 创建URL URL url = new URL(imgStr); // 创建链接 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod('GET'); conn.setConnectTimeout(5000); inputStream = conn.getInputStream(); outputStream = new ByteArrayOutputStream(); // 将内容读取内存中 buffer = new byte[1024]; int len = -1; while ((len = inputStream.read(buffer)) != -1) { outputStream.write(buffer, 0, len); } buffer = outputStream.toByteArray(); } else { inputStream = new FileInputStream(imgStr); int count = 0; while (count == 0) { count = inputStream.available(); } buffer = new byte[count]; inputStream.read(buffer); } } catch (Exception e) { e.printStackTrace(); } finally { if (inputStream != null) { try { // 关闭inputStream流 inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } if (outputStream != null) { try { // 关闭outputStream流 outputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } // 对字节数组Base64编码 return new BASE64Encoder().encode(buffer); }

将图片Base64编码转换成img图片文件(解码)

/**     * 将图片Base64编码转换成img图片文件     *     * @param imgBase64 图片Base64编码     * @param imgPath   图片生成路径     * @return     */    public static boolean getImgBase64ToImgFile(String imgBase64, String imgPath) {        boolean flag = true;        OutputStream outputStream = null;        try {            // 解密处理数据            byte[] bytes = new BASE64Decoder().decodeBuffer(imgBase64);            for (int i = 0; i < bytes.length; ++i) {                if (bytes[i] < 0) {                    bytes[i] += 256;                }            }            outputStream = new FileOutputStream(imgPath);            outputStream.write(bytes);        } catch (Exception e) {            e.printStackTrace();            flag = false;        } finally {            if (outputStream != null) {                try {                    // 关闭outputStream流                    outputStream.close();                } catch (IOException e) {                    e.printStackTrace();                }            }        }        return flag;    }
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
深入学习Tomcat
微信支付:body不是utf8编码
Oracle中插入图片并显示(用BLOB类型)
Android异步加载网络图片
java流
Java中通过TCP协议发送和接收数据
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服