I have written code that produces png image and reduce aliasing from html code.
When i run it on my api endpoint i don't have same results that in a unit test
@Test
public void createImage2() throws Exception{
String fileNamePng = "createImage2_"+String.valueOf(System.currentTimeMillis() + ".png");
File image = new File("/tmp/img/"+ fileNamePng);
HtmlImageGenerator htmlImageGenerator = new HtmlImageGenerator();
htmlImageGenerator.loadHtml(svg);
htmlImageGenerator.saveAsImage(image);
BufferedImage sourceImage = ImageIO.read(image);
Graphics g = sourceImage.getGraphics();
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
ImageIO.write(sourceImage,"png",image);
}
In my api endpoint
}else if(svg.startsWith("<div")){
File image = new File("/tmp/"+fileName);
HtmlImageGenerator htmlImageGenerator = new HtmlImageGenerator();
htmlImageGenerator.loadHtml(svg);
htmlImageGenerator.saveAsImage(image);
BufferedImage sourceImage = ImageIO.read(image);
Graphics g = sourceImage.getGraphics();
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
ImageIO.write(sourceImage,"png",image);
Files.copy(image.toPath(), response.getOutputStream());
Files.delete(image.toPath());
}
response.flushBuffer();
Result is : /Size is 3kb
it look likes all part gd2 graphics is not applied but i can see in my tmp files that when debugger is in theses lines, the date "modified on" is changed.
svg / html code in input is the same for api endpoint and unit test. (i checked haschode)
Edit 1:
I used Scalr :
}else if(svg.startsWith("<div")){
System.out.println(svg.hashCode());
File image = new File("/tmp/"+fileName);
HtmlImageGenerator htmlImageGenerator = new HtmlImageGenerator();
htmlImageGenerator.loadHtml(svg);
height = (int) htmlImageGenerator.getSize().getHeight();
width = (int) htmlImageGenerator.getSize().getWidth();
BufferedImage test3 = Scalr.apply(htmlImageGenerator.getBufferedImage(),Scalr.OP_ANTIALIAS);
ImageIO.write(test3,"png",image);
Files.copy(image.toPath(), response.getOutputStream());
}
response.flushBuffer();
It look like blured as described in scalr doc (antialiasing from scalr is more like a low blur effect)