如何在pAVA中将png二进制数据转换为bmp二进制数据?

时间:2017-06-07 17:54:47

标签: java image base64

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

但是,结果总是返回空。任何人都可以帮我解决这个问题吗? 感谢

1 个答案:

答案 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"。不确定这是否重要。享受。