java - 将 EMF 转换为 PNG,结果并不完美
问题描述
我正在尝试将 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"));
}
解决方案
问题是我使用的是旧版本的 Apache POI。我尝试了 Apache POI 5.0.0,结果要好得多。
马文:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.0.0</version>
</dependency>
推荐阅读
- jquery - 通过 Reactjs -Jquery 单击时,Unshift 函数会创建其他按钮
- react-native - 当后面没有任何东西时,无法滚动绝对定位的 FlatList
- c - 如何从输入文件中读取并保存每行的某些部分并将其输出到命令行?
- php - 如何在表单的输入值中添加 PHP 代码
- django - How do I restrict foreign keys choices in admin formset to related objects only in django
- php - 正则表达式与“0.00”值不匹配
- android - 为什么 ListFragment 在没有 ListView 标签的情况下工作?
- html - Wrong Positioning of Font Awesome Icon in Input Box in Google Chrome
- postgresql - 如何将数据从文本文件导入数据库?
- excel - 是否可以在不使用按钮的情况下添加或删除单元格区域或工作表的副本