我创建了以下方法,它构建了一个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;
}
答案 0 :(得分:1)
您根本不需要使用ImageIO。只需从资源中读取 bytes 并对它们进行base64编码。
您正在将JPEG转换为另一种JPEG,这是一种固有的有损过程,尽管它不应该像低质量那样糟糕。但是你根本不需要这样做。