java利用Base64编码和解码图片文件

最近换了一份工作,暂时没有什么可以分享的,就拷贝一个轮子吧。图片在项目中进行传输和存储是很常见的事情。所以这个轮子就是Java中关于图片的base64编码解码片段。

  1. import java.awt.image.BufferedImage;
  2. import java.io.ByteArrayOutputStream;
  3. import java.io.File;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;
  6. import java.net.MalformedURLException;
  7. import java.net.URL;
  8. import javax.imageio.ImageIO;
  9. import sun.misc.BASE64Decoder;
  10. import sun.misc.BASE64Encoder;
  11. public class ImageUtils {
  12.     /**
  13.      * 将网络图片进行Base64位编码
  14.      * 
  15.      * @param imgUrl
  16.      *            图片的url路径,如http://.....xx.jpg
  17.      * @return
  18.      */
  19.     public static String encodeImgageToBase64(URL imageUrl) {// 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
  20.         ByteArrayOutputStream outputStream = null;
  21.         try {
  22.             BufferedImage bufferedImage = ImageIO.read(imageUrl);
  23.             outputStream = new ByteArrayOutputStream();
  24.             ImageIO.write(bufferedImage, "jpg", outputStream);
  25.         } catch (MalformedURLException e1) {
  26.             e1.printStackTrace();
  27.         } catch (IOException e) {
  28.             e.printStackTrace();
  29.         }
  30.         // 对字节数组Base64编码
  31.         BASE64Encoder encoder = new BASE64Encoder();
  32.         return encoder.encode(outputStream.toByteArray());// 返回Base64编码过的字节数组字符串
  33.     }
  34.     /**
  35.      * 将本地图片进行Base64位编码
  36.      * 
  37.      * @param imgUrl
  38.      *            图片的url路径,如http://.....xx.jpg
  39.      * @return
  40.      */
  41.     public static String encodeImgageToBase64(File imageFile) {// 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
  42.         ByteArrayOutputStream outputStream = null;
  43.         try {
  44.             BufferedImage bufferedImage = ImageIO.read(imageFile);
  45.             outputStream = new ByteArrayOutputStream();
  46.             ImageIO.write(bufferedImage, "jpg", outputStream);
  47.         } catch (MalformedURLException e1) {
  48.             e1.printStackTrace();
  49.         } catch (IOException e) {
  50.             e.printStackTrace();
  51.         }
  52.         // 对字节数组Base64编码
  53.         BASE64Encoder encoder = new BASE64Encoder();
  54.         return encoder.encode(outputStream.toByteArray());// 返回Base64编码过的字节数组字符串
  55.     }
  56.     /**
  57.      * 将Base64位编码的图片进行解码,并保存到指定目录
  58.      * 
  59.      * @param base64
  60.      *            base64编码的图片信息
  61.      * @return
  62.      */
  63.     public static void decodeBase64ToImage(String base64, String path,
  64.             String imgName) {
  65.         BASE64Decoder decoder = new BASE64Decoder();
  66.         try {
  67.             FileOutputStream write = new FileOutputStream(new File(path
  68.                     + imgName));
  69.             byte[] decoderBytes = decoder.decodeBuffer(base64);
  70.             write.write(decoderBytes);
  71.             write.close();
  72.         } catch (IOException e) {
  73.             e.printStackTrace();
  74.         }
  75.     }
  76. }

30岁的年纪,所有的事情必须自己顶着,就码农这个职业来说,基本上几天不学习就会落后别人一大圈。所以无论PHP、Java、C、Python……最起码都要了解一点。

你想把广告放到这里吗?

发表评论

您必须 登录 才能发表留言!