Java 渲染到BuffereImage时,Apache poi将丢失形状质量
我有一个幻灯片,幻灯片上有一些简单的形状。我正在用Apache Poi加载它:Java 渲染到BuffereImage时,Apache poi将丢失形状质量,java,apache-poi,rendering,bufferedimage,Java,Apache Poi,Rendering,Bufferedimage,我有一个幻灯片,幻灯片上有一些简单的形状。我正在用Apache Poi加载它: XMLSlideShow ppt = MY_SLIDE_SHOW; for (XSLFSlide slide: ppt.getSlides()) { List<XSLFShape> shapeList = slide.getShapes(); for (XSLFShape shape: shapeList) { // data about shape dime
XMLSlideShow ppt = MY_SLIDE_SHOW;
for (XSLFSlide slide: ppt.getSlides()) {
List<XSLFShape> shapeList = slide.getShapes();
for (XSLFShape shape: shapeList) {
// data about shape dimensions
Rectangle2D anchor = shape.getAnchor();
// buffered image to draw into
BufferedImage img = new BufferedImage((int)anchor.getWidth(), (int)anchor.getHeight(), BufferedImage.TYPE_INT_RGB);
Graphics2D graphics = img.createGraphics();
// set a clear transparent background to the image
graphics.setComposite(AlphaComposite.Clear);
graphics.fillRect(0, 0, (int)anchor.getWidth(), (int)anchor.getHeight());
// draw the shape into the buffered image
graphics.setComposite(AlphaComposite.Src);
shape.draw(graphics, new Rectangle(0, 0, (int)anchor.getWidth(), (int)anchor.getHeight()));
graphics.dispose();
}
}
xmlsideshow ppt=我的幻灯片放映;
对于(XSLFSlide幻灯片:ppt.getSlides()){
List shapeList=slide.getShapes();
for(XSLFShape形状:shapeList){
//关于形状尺寸的数据
矩形2D锚点=shape.getAnchor();
//要绘制到的缓冲图像
BuffereImage img=新的BuffereImage((int)anchor.getWidth(),(int)anchor.getHeight(),BuffereImage.TYPE_int_RGB);
Graphics2D graphics=img.createGraphics();
//为图像设置清晰透明的背景
图形.setComposite(AlphaComposite.Clear);
fillRect(0,0,(int)anchor.getWidth(),(int)anchor.getHeight());
//将形状绘制到缓冲图像中
graphics.setComposite(AlphaComposite.Src);
绘制(图形,新矩形(0,0,(int)anchor.getWidth(),(int)anchor.getHeight());
graphics.dispose();
}
}
但是,虽然我能够渲染形状,但它们的分辨率要低得多,并且会失去任何效果(光晕、倒角、3d格式、阴影、反射等)
下面是powerpoint(带效果)和渲染对象(无效果)的比较:
我认为,所需的解决方案可能有三个方面,因此希望您能回答以下问题:
- 如何随形状一起渲染形状效果
- 如何以高于面值的分辨率渲染形状,然后缩小比例(而不是像目前这样以较低的分辨率放大)
- 如何渲染透明背景的形状,这让我很惊讶,但目前还不能工作
谢谢大家! 我负责POI幻灯片的渲染。w、 r.t.你的问题是:a)形状效果尚未实现。b) idk你的意思是,你可以,c)有些情况下,背景是不透明的。如果你想部分解决这个问题,请打开一个文件夹并附上你的文件。谢谢你的评论!非常感谢!w、 r.t->a)好的,b)我会看看这是否解决了我的形状的质量问题。c) 好的。我正在处理POI幻灯片的渲染。w、 r.t.你的问题是:a)形状效果尚未实现。b) idk你的意思是,你可以,c)有些情况下,背景是不透明的。如果你想部分解决这个问题,请打开一个文件夹并附上你的文件。谢谢你的评论!非常感谢!w、 r.t->a)好的,b)我会看看这是否解决了我的形状的质量问题。c) 行。