最近换了一份工作,暂时没有什么可以分享的,就拷贝一个轮子吧。图片在项目中进行传输和存储是很常见的事情。所以这个轮子就是Java中关于图片的base64编码解码片段。
- import java.awt.image.BufferedImage;
- import java.io.ByteArrayOutputStream;
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.net.MalformedURLException;
- import java.net.URL;
- import javax.imageio.ImageIO;
- import sun.misc.BASE64Decoder;
- import sun.misc.BASE64Encoder;
- public class ImageUtils {
- /**
- * 将网络图片进行Base64位编码
- *
- * @param imgUrl
- * 图片的url路径,如http://.....xx.jpg
- * @return
- */
- public static String encodeImgageToBase64(URL imageUrl) {// 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
- ByteArrayOutputStream outputStream = null;
- try {
- BufferedImage bufferedImage = ImageIO.read(imageUrl);
- outputStream = new ByteArrayOutputStream();
- ImageIO.write(bufferedImage, "jpg", outputStream);
- } catch (MalformedURLException e1) {
- e1.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- // 对字节数组Base64编码
- BASE64Encoder encoder = new BASE64Encoder();
- return encoder.encode(outputStream.toByteArray());// 返回Base64编码过的字节数组字符串
- }
- /**
- * 将本地图片进行Base64位编码
- *
- * @param imgUrl
- * 图片的url路径,如http://.....xx.jpg
- * @return
- */
- public static String encodeImgageToBase64(File imageFile) {// 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
- ByteArrayOutputStream outputStream = null;
- try {
- BufferedImage bufferedImage = ImageIO.read(imageFile);
- outputStream = new ByteArrayOutputStream();
- ImageIO.write(bufferedImage, "jpg", outputStream);
- } catch (MalformedURLException e1) {
- e1.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- // 对字节数组Base64编码
- BASE64Encoder encoder = new BASE64Encoder();
- return encoder.encode(outputStream.toByteArray());// 返回Base64编码过的字节数组字符串
- }
- /**
- * 将Base64位编码的图片进行解码,并保存到指定目录
- *
- * @param base64
- * base64编码的图片信息
- * @return
- */
- public static void decodeBase64ToImage(String base64, String path,
- String imgName) {
- BASE64Decoder decoder = new BASE64Decoder();
- try {
- FileOutputStream write = new FileOutputStream(new File(path
- + imgName));
- byte[] decoderBytes = decoder.decodeBuffer(base64);
- write.write(decoderBytes);
- write.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
30岁的年纪,所有的事情必须自己顶着,就码农这个职业来说,基本上几天不学习就会落后别人一大圈。所以无论PHP、Java、C、Python……最起码都要了解一点。