您的当前位置:首页java编写之jpg图片与base64编码之间的转换

java编写之jpg图片与base64编码之间的转换

2021-10-14 来源:乌哈旅游
java编写之jpg图⽚与base64编码之间的转换

/**

* @author zyq

* 将⽹络图⽚进⾏Base64位编码* @param imgUrl**/

public static String encodeWebImageToBase64(URL imgUrl){ //传⼊图⽚url,将⽹络图⽚编码为base64编码String webArray;

ByteArrayOutputStream outputStream = null; //字节数组流,可以捕获内存缓冲区的数据,转换成字节数组(拓展:ByteArrayInputStream:可以将字节数组转化为输⼊流)try {

BufferedImage bufferedImage = ImageIO.read(imgUrl); //Image是⼀个抽象列,BufferedImage是Image的实现,Image和BufferedImage的主要作⽤就是将⼀副图⽚加载到内存 中

outputStream = new ByteArrayOutputStream();

ImageIO.write(bufferedImage,\"jpg\将BufferedImage对象直接写出指定输出流outputStream,图⽚格式为jpg

}catch (MalformedURLException e){ //URL协议、格式或者路径错误异常e.printStackTrace();

}catch (IOException e1){ //输⼊输出异常e1.printStackTrace();}

BASE64Encoder encoder = new BASE64Encoder(); //BASE64Encoder,字符串加密算法

webArray = encoder.encode(outputStream.toByteArray()); //编码为base64编码(⽅法参数为字节数组),其中outputStream.toByteArray()⽤于获取内存缓冲中的数据,并转换 为字节数组return webArray;}

/**

* @author zyq

* 将本地图⽚进⾏Base64位编码* @param imageFile*/

public static String encodeLocImageToBase64(File imageFile){String locArray;

ByteArrayOutputStream outputStream = null;try {

BufferedImage bufferedImage = ImageIO.read(imageFile);outputStream = new ByteArrayOutputStream();ImageIO.write(bufferedImage,\"jpg\}catch (MalformedURLException e1){e1.printStackTrace();}catch (IOException e){e.printStackTrace();}

BASE64Encoder encoder = new BASE64Encoder();locArray = encoder.encode(outputStream.toByteArray());return locArray;}

/**

* @author zyq

* 将base64编码的图⽚进⾏解码显⽰,并保存在指定路径* @param base64code* @param imagePath* @param imageName*/

public static void decodeBase64ToImage(String base64code,String imagePath,String imageName){

BASE64Decoder decoder = new BASE64Decoder(); //BASE64Decoder,base64编码解码算法,解码为字节数组try {

FileOutputStream write = new FileOutputStream(new File(imagePath + imageName)); //⽂件输出流,是⽤于将数据写⼊File或FileDescriptor的输出流,其中

File(imagePath + imageName)创建⽂件,参数为⽂件名(⽂件路径)

byte[] decoderBytes = decoder.decodeBuffer(base64code); //解码,⽅法参数为base64加密编码write.write(decoderBytes); //decoderBytes数组写⼊⽂件

write.close(); //关闭此⽂件输出流并释放与此流有关的所有系统资源}catch (IOException e){e.printStackTrace();}}

因篇幅问题不能全部显示,请点此查看更多更全内容