如何将 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"。不确定这是否重要。享受。
我从数据库中获取了 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"。不确定这是否重要。享受。