Apache poi теряет качество формы при рендеринге в BufferedImage - PullRequest
1 голос
/ 05 февраля 2020

У меня есть слайд-шоу с несколькими простыми формами в PowerPoint. Я загружаю его с Apache Poi:

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();
     }
}

Однако, хотя я могу рендерить фигуры, они выходят с гораздо меньшим разрешением и теряют любые эффекты (свечение, скос, 3d формат, тень , отражение, и т. д. c.)

Здесь ниже приведено сравнение powerpoint (с эффектами) и визуализированного объекта (без эффектов):

Comparison

Я считаю, что требуемое решение, вероятно, будет тройным, и поэтому буду признателен за ответы на следующие вопросы:

  • Как визуализировать эффекты формы вместе с формами?
  • Как визуализировать фигуры с более высоким разрешением, чем номинал, а затем уменьшить (а не с меньшим разрешением и масштабированием, как это в настоящее время происходит)?
  • Как визуализировать фигуры с прозрачным фоном, который Я удивлен, что в настоящее время не работает?

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...