ImageIO.write()低质量图像

时间:2014-05-27 21:33:32

标签: java image

我创建了以下方法,它构建了一个base64编码的图像字符串。我遇到的问题是,当它运行时,它抓取的图像是高质量的,但是当它被保存到字节数组然后编码时,图像像素化并且质量相当低,我该怎么做才能得到100%品质形象?

public String getImageString(String img){
    String image = "";
    try{
        BufferedImage bufferedImage = ImageIO.read(HelpPage.class.getResource(img));
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        ImageIO.write(bufferedImage, "JPG", out);
        String base64bytes = Base64.encode(out.toByteArray());
        image = "data:image/jpeg;base64," + base64bytes;
    }catch(IOException ex){
        Logger.getLogger(HomePage.class.getName()).log(Level.SEVERE, null, ex);
    }
    return image;
}

1 个答案:

答案 0 :(得分:1)

您根本不需要使用ImageIO。只需从资源中读取 bytes 并对它们进行base64编码。

您正在将JPEG转换为另一种JPEG,这是一种固有的有损过程,尽管它不应该像低质量那样糟糕。但是你根本不需要这样做。