我从数据库中获取了PNG格式的二进制数据。现在,我需要将格式更改为BMP,然后通过Base64将其转换为字符串。
我的逻辑是PNG二进制 - > BMP二进制 - > BMP base64字符串。
我的代码如下。输入“data”是PNG二进制文件,imageFormat =“BMP”。
public static String imageToBase64 (byte[] data, String imageFormat) throws IOException{
BufferedImage imag=ImageIO.read(new ByteArrayInputStream(data));
ByteArrayOutputStream baos=new ByteArrayOutputStream(1000);
ImageIO.write(imag, imageFormat, baos);
String base64String=Base64.encodeBytes(baos.toByteArray());
return base64String;
}
但是,结果总是返回空。任何人都可以帮我解决这个问题吗? 感谢
答案 0 :(得分:0)
您需要使用Java API写入新的BMP文件。根据您的代码,这就是您所做的事情。
public static String imageToBase64(byte[] data, String imageFormat) throws IOException {
BufferedImage imag = ImageIO.read(new ByteArrayInputStream(data));
BufferedImage bmpImg = new BufferedImage(imag.getWidth(), imag.getHeight(), BufferedImage.TYPE_INT_RGB);
bmpImg.createGraphics().drawImage(imag, 0, 0, Color.WHITE, null);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(bmpImg, imageFormat, baos);
String base64String = Base64.getEncoder().encodeToString(baos.toByteArray());
return base64String;
}
请注意我使用" bmp" (小写)而不是" BMP"。不确定这是否重要。享受。