Java-输出不打印

时间:2016-05-05 10:04:47

标签: java file-io bufferedimage javax.imageio bytearrayoutputstream

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

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;
    }
}

如何克服这个问题?

1 个答案:

答案 0 :(得分:2)

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

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

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