1
我已经编写了生成png图像并减少html代码中的别名的代码。在不同的上下文中运行相同的代码会产生不同的结果
,当我在我的API端点运行它,我没有相同的结果,在一个单元测试
@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);
}
在我的API端点
}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();
结果是:/尺寸是3KB
它看起来很喜欢所有的部分gd2图形不适用,但我可以在我的tmp文件中看到,当调试器在这些行中时,“修改的日期”被更改。
输入中的svg/html代码对于api端点和单元测试是相同的。 (我检查haschode)
编辑1:
我用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();
它看作为在scalr文档描述等所迷离(从scalr反锯齿更像是一个低模糊效果)
好吧,我用弹簧。我刚刚读到,Spring实现了一些JavaEE,但替换了一些部分,但graphics2d是来自Java SE否? 。我要尝试从给定的链接 –
scalr,我不能改变我的API实现 –