將圖片轉成base64字符串并在JSP頁面顯示的Java代碼

jopen 9年前發布 | 12K 次閱讀 Java

 本事例主要講了如下幾點:
 
1:將圖片轉換為BASE64加密字符串.
  2:將圖片流轉換為BASE64加密字符串.
 
3:將BASE64加密字符串轉換為圖片.

 * 4:在jsp文件中以引用的方式和BASE64加密字符串方式展示圖片.

首先看工具類:

import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;

import javax.imageio.ImageIO;

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

/**

  • @author IluckySi
  • @since 20150122 */
    public class ImageUtil {

    private static BASE64Encoder encoder = new sun.misc.BASE64Encoder();
    private static BASE64Decoder decoder = new sun.misc.BASE64Decoder();

    /**

    • 將圖片轉換為BASE64加密字符串.
    • @param imagePath 圖片路徑.
    • @param format 圖片格式.
    • @return */
      public String convertImageToByte(String imagePath, String format) {
      File file = new File(imagePath);
      BufferedImage bi = null;
      ByteArrayOutputStream baos = null;
      String result = null;
      try {

       bi = ImageIO.read(file);  
       baos = new ByteArrayOutputStream();  
       ImageIO.write(bi, format == null ? "jpg" : format, baos);  
       byte[] bytes = baos.toByteArray();  
       result = encoder.encodeBuffer(bytes).trim();  
       System.out.println("將圖片轉換為BASE64加密字符串成功!");  
      

      } catch (IOException e) {

       System.out.println("將圖片轉換為 BASE64加密字符串失敗: " + e);  
      

      } finally {

       try {  
           if(baos != null) {  
               baos.close();  
               baos = null;  
           }  
       } catch (Exception e) {  
           System.out.println("關閉文件流發生異常: " + e);  
       }  
      

      }
      return result;
      }

      /**

    • 將圖片流轉換為BASE64加密字符串.
    • @param imageInputStream
    • @param format 圖片格式.
    • @return */
      public String convertImageStreamToByte(InputStream imageInputStream, String format) {
      BufferedImage bi = null;
      ByteArrayOutputStream baos = null;
      String result = null;
      try {

       bi = ImageIO.read(imageInputStream);  
       baos = new ByteArrayOutputStream();  
       ImageIO.write(bi, format == null ? "jpg" : format, baos);  
       byte[] bytes = baos.toByteArray();  
       result = encoder.encodeBuffer(bytes).trim();  
       System.out.println("將圖片流轉換為BASE64加密字符串成功!");  
      

      } catch (IOException e) {

       System.out.println("將圖片流轉換為 BASE64加密字符串失敗: " + e);  
      

      } finally {

       try {  
           if(baos != null) {  
               baos.close();  
               baos = null;  
           }  
       } catch (Exception e) {  
           System.out.println("關閉文件流發生異常: " + e);  
       }  
      

      }
      return result;
      }

      /**

    • 將BASE64加密字符串轉換為圖片.
    • @param base64String
    • @param imagePath 圖片生成路徑.
    • @param format 圖片格式. */
      public void convertByteToImage(String base64String, String imagePath, String format) {
      byte[] bytes = null;
      ByteArrayInputStream bais = null;
      BufferedImage bi = null;
      File file = null;
      try {
       bytes = decoder.decodeBuffer(base64String);  
       bais = new ByteArrayInputStream(bytes);  
       bi = ImageIO.read(bais);  
       file = new File(imagePath);  
       ImageIO.write(bi, format == null ? "jpg" : format, file);  
       System.out.println("將BASE64加密字符串轉換為圖片成功!");  
      
      } catch (IOException e) {
       System.out.println("將BASE64加密字符串轉換為圖片失敗: " + e);  
      
      } finally {
       try {  
           if(bais != null) {  
               bais.close();  
               bais = null;  
           }  
       } catch (Exception e) {  
           System.out.println("關閉文件流發生異常: " + e);  
       }  
      
      }
      }
      } </pre>
      然后看測試類:
      import java.io.InputStream;  

import com.ilucky.util.image.ImageUtil;

/**

  • 本事例主要講了如下幾點:
  • 1:將圖片轉換為BASE64加密字符串.
  • 2:將圖片流轉換為BASE64加密字符串.
  • 3:將BASE64加密字符串轉換為圖片.
  • 4:在jsp文件中以引用的方式和BASE64加密字符串方式展示圖片.
  • @author IluckySi
  • @since 20150122 */
    public class MainTest {

    public static void main(String[] args) {

     ImageUtil imageUtil = new ImageUtil();  
    
     String base64String = imageUtil.convertImageToByte("D:\\test.png", "png");  
     System.out.println(base64String);  
     imageUtil.convertByteToImage(base64String, "D:\\test2.png", "png");  
    
     InputStream is = MainTest.class.getResourceAsStream("test.png");  
     String base64String2 = imageUtil.convertImageStreamToByte(is, "png");  
     System.out.println(base64String2);  
     imageUtil.convertByteToImage(base64String2, "D:\\test3.png", "png");  
    

    }
    } </pre>
    最后看jsp文件:

        <!DOCTYPE html>
    <html>
    <head>

     <title>index.html</title>  
     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
     <meta http-equiv="description" content="this is my page">  
     <meta http-equiv="content-type" content="text/html; charset=UTF-8">  
    

    </head>
    <body>

     <!--   
     data表示取得數據的協定名稱,image/png是數據類型名稱,base64 是數據的編碼方法,  
     逗號后面是image/png文件base64編碼后的數據.   
     data:text/css;base64,base64編碼的CSS代碼   
     data:text/javascript,Javascript代碼   
     data:text/javascript;base64,base64編碼的Javascript代碼   
     data:image/gif;base64,base64編碼的gif圖片數據   
     data:image/png;base64,base64編碼的png圖片數據   
     data:image/jpeg;base64,base64編碼的jpeg圖片數據   
     data:image/x-icon;base64,base64編碼的icon圖片數據   
      -->  
     <img src="test.png"/>  
     <img src="data:image/png;base64,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  
             AABJRU5ErkJggg=="/>   
    

    </body>
    </html> </pre>
    部署項目,啟動服務器,訪問jsp頁面,會看到瀏覽器上有兩張一樣的圖片.

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!