Java- 输出不打印

Java- Output not printing

我正在尝试使用 BufferedImage class 将图像文件转换为 Base64 字符串。即使代码没有给出任何 compilation/run 时间错误,输出也不会打印在控制台中。

Eclipse IDE 代码:

public class BufferImage {

public static void main(String args[]) {
try 
{
    BufferedImage img = null;
    img = ImageIO.read(new File("image.jpg")); // eventually C:\ImageTest\pic2.jpg
    String image_string = encodeToString(img, "string");
    System.out.println(image_string);
} 
catch (IOException e) 
{
    e.printStackTrace();
}
}

public static String encodeToString(BufferedImage image, String type) 
{
    String base64String = null;
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    try {
    ImageIO.write(image, type, bos);
    byte[] imageBytes = bos.toByteArray();
    BASE64Encoder encoder = new BASE64Encoder();
    base64String = encoder.encode(imageBytes);
    bos.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    return base64String;
    }
}

如何克服这个问题?

问题出在ImageIO.write(image, type, bos);。在您的情况下,类型是 "String",但这很可能不是有效格式。要查看您可以使用的所有格式,请执行 ImageIO.getReaderFormatNames().

如果您可以使用 Apache Commons,我建议您尝试以下方法将您的文件编码为 Base64:(fileImageFile 类型):

byte[] imageBytes = Base64.encode(FileUtils.readFileToByteArray(fileImage)); 
String base64String = new String(imageBytes);