欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

base64对图片转换

程序员文章站 2022-03-06 18:33:51
base64对图片转换的工具类,当然它也可以对其他文件格式转换(/ω\),这里有一个获取项目真实路径的写法,可以去看看我的上一篇文章,如何获取项目真实路径public class Base64Util { public static void main(String[] args) { //图片转base64 String base64img = imageToBase64("E:\\图片\\boom.jpg"); System.out.print...

base64对图片转换的工具类,当然它也可以对其他格式文件转换(/ω\),这里有一个获取项目真实路径的写法,可以去看看我的上一篇文章,如何获取项目真实路径

public class Base64Util {

    public static void main(String[] args) {
        //图片转base64
        String base64img = imageToBase64("E:\\图片\\boom.jpg");
        System.out.println(base64img);

        //base64转图片
        String path = ClassUtils.getDefaultClassLoader().getResource("").getPath();
        path=path+"imgs";
        File file=new File(path);
        if(!file.exists()){
            file.mkdir();
        }
        //生成随机新文件名
        String newfilename = UUID.randomUUID().toString();
        path=path+"/"+newfilename+".jpg";
        System.out.println(path);
        boolean b = base64ToImage(base64img, path);
        System.out.println(b);
    }


    /**
     * 对字节数组字符串进行Base64解码并生成图片
     * @param imgStr  base64编码的字符串
     * @param filePath   解码后图片保存的位置  必须是真实路径 例如 D:\\img\\lzp.jpg
     * @return   (true:成功 , false:失败)
     */
    public static boolean base64ToImage(String imgStr, String filePath) {
        if(imgStr == null) // 图像数据为空
            return false;
        BASE64Decoder decoder = new BASE64Decoder();
        try {
            // Base64解码
            byte[] bytes = decoder.decodeBuffer(imgStr);
            for (int i = 0; i < bytes.length; ++i) {
                if (bytes[i] < 0) {// 调整异常数据
                    bytes[i] += 256;
                }
            }
            // 生成图片
            OutputStream out = new FileOutputStream(filePath);
            out.write(bytes);
            out.flush();
            out.close();
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    /**
     * 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
     * @param filePath  文件路径
     * @return   base64编码后的字符串
     */
    public static String imageToBase64(String filePath) {
        byte[] data = null;
        //读取图片字节数组
        try {
            InputStream in = new FileInputStream(filePath);
            // available用法  http://www.cnblogs.com/MyFavorite/archive/2010/10/19/1855758.html
            //要一次读取多个字节时,经常用到InputStream.available()方法,
            // 这个方法可以在读写操作前先得知数据流里有多少个字节可以读取
            data = new byte[in.available()];
            in.read(data);
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 对字节数组Base64编码
        BASE64Encoder encoder = new BASE64Encoder();
        return encoder.encode(data);
    }


}

本文地址:https://blog.csdn.net/qq_45710884/article/details/111869202

相关标签: java