将 EMF 转换为 PNG,结果并不完美
Posted
技术标签:
【中文标题】将 EMF 转换为 PNG,结果并不完美【英文标题】:Convert EMF to PNG, result is not perfect 【发布时间】:2021-04-24 16:09:17 【问题描述】:我正在尝试将 EMF 文件转换为 PNG,但成功了一半。 使用该代码,我可以从 EMF 创建一个 PNG 图片,但结果并不完美:与原始图片相比,它在图片右侧被水平“挤压”+ 缺少一些像素列。 (好像被剪掉了,不知道为什么)
有什么想法吗?
我的代码:
File f = new File(PathToImage);
try (FileInputStream fis = new FileInputStream(f))
HemfPicture emf = new HemfPicture(fis);
Dimension2D dim = emf.getSize();
int width = Units.pointsToPixel(dim.getWidth());
int height = Units.pointsToPixel(dim.getHeight());
BufferedImage bufImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics2D g = bufImg.createGraphics();
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);
g.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);
emf.draw(g, new Rectangle2D.Double(0, 0, width, height));
g.dispose();
ImageIO.write(bufImg, "PNG", new File(
path + imageName + ".png"));
【问题讨论】:
试试PPTX2PNG 和 emfHeaderBounds 选项。如果你愿意,你可以把你的 EMF 发给我,我会检查的。 ...请使用 POI 5.0.0,因为我试图修复各种渲染问题 对不起,对于迟到的答案,看起来好多了,我可以接受这个作为答案。感谢您的帮助。 【参考方案1】:问题是我使用的是旧版本的 Apache POI。我尝试了Apache POI 5.0.0,结果好多了。
马文:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.0.0</version>
</dependency>
【讨论】:
以上是关于将 EMF 转换为 PNG,结果并不完美的主要内容,如果未能解决你的问题,请参考以下文章