有时候接口返回的图片是一个BASE64的字符串,需要我们将其转换成对应的图片,网上虽然有在线的转换,但是我没找到将BASE64字符串转换成图片的工具,所以自己写了一个小工具,下面提供核心工具类:
转换工具(写的比较粗糙)下载地址: 链接:https://pan.baidu.com/s/1twlh2Ygw7ugUI_jRqW_N1A 提取码:jzf5
转换工具类:
import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.Transferable; import javax.imageio.ImageIO; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; public class ImageToBase64 { static BASE64Encoder encoder = new sun.misc.BASE64Encoder(); static BASE64Decoder decoder = new sun.misc.BASE64Decoder(); /* * 图片转换成BASE64字符串 * filePath 待转换图片路径 */ public static String getImageBinary(String filePath) { try { BufferedImage bi = ImageIO.read(new File(filePath)); ByteArrayOutputStream baos = new ByteArrayOutputStream(); ImageIO.write(bi, "jpg", baos); byte[] bytes = baos.toByteArray(); return encoder.encodeBuffer(bytes).trim(); } catch (IOException e) { e.printStackTrace(); } return null; } /* * BASE64字符串转换成图片 * base64String BASE64字符串 * filePath 文件存储路径 */ public static void base64StringToImage(String base64String, String filePath) { try { byte[] bytes1 = decoder.decodeBuffer(base64String); ByteArrayInputStream bais = new ByteArrayInputStream(bytes1); BufferedImage bi1 = ImageIO.read(bais); ImageIO.write(bi1, "jpg", new File(filePath)); } catch (IOException e) { e.printStackTrace(); } } /** * 将字符串复制到剪切板。 */ public static void setSysClipboardText(String writeMe) { Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard(); Transferable tText = new StringSelection(writeMe); clip.setContents(tText, null); } }