如何将 png 二进制数据转换为 JAVA 中的 bmp 二进制数据?

How could I convert png binary data into bmp binary data in JAVA?

我从数据库中获取了 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;        
     }

然而,结果总是return空的。谁能帮我解决这个问题? 谢谢

您需要使用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"。不确定这是否重要。享受。