JAVA - 網絡/本地圖片互轉Base64

簡介:實際需求是,接口傳輸圖片等文件時,先轉成Base64字符串,再傳輸,然後接受,再轉成圖片

一、讀取網絡圖片轉Base64

 public static String readNetFile(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);
                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();
            }
            // 對字節數組Base64編碼
            BASE64Encoder encoder = new BASE64Encoder();
            return encoder.encode(data.toByteArray());
    }

二、上傳本地文件轉Base64

 static String getImageBinary(MultipartFile file) {
        try {
            BufferedImage bi = ImageIO.read(file.getInputStream());
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            ImageIO.write(bi, "jpg", baos);
            byte[] bytes = baos.toByteArray();
            BASE64Encoder encoder = new BASE64Encoder();
            return encoder.encodeBuffer(bytes).trim();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

三、Base64字符串轉圖片

   static void base64StringToImage(String base64String) {
        try {
            BASE64Decoder decoder = new BASE64Decoder();
            byte[] bytes = decoder.decodeBuffer(base64String);
            ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
            BufferedImage bi = ImageIO.read(bais);
            File file = new File("d://out.jpg");
            ImageIO.write(bi, "jpg", file);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

校驗Base64轉換網址 http://www.vgot.net/test/image2base64.php

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章