我正在尝试将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"));
}
发布于 2021-06-07 06:39:01
问题是我使用的是较旧版本的Apache POI。我尝试了Apache POI 5.0.0,结果要好得多。
Maven:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.0.0</version>
</dependency>
https://stackoverflow.com/questions/65807088
复制相似问题