首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将WMF转换为PNG/BMP/JPG

将WMF转换为PNG/BMP/JPG
EN

Stack Overflow用户
提问于 2013-01-11 21:21:44
回答 3查看 8K关注 0票数 5

如何将WMF文件转换为具有自定义输出分辨率的PNG/BMP/JPG格式?

示例:以WMF文件为例,以2000x2000像素输出PNG文件。

提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-11 21:23:39

您可以使用excelent Batik ( http://xmlgraphics.apache.org/batik/ )库来实现这一点。但您需要遵循以下步骤:

使用WMFTranscoder

  • Convert SVG to
  1. 使用JPGTranscoder

将WMF文件转换为SVG

WMF >> SVG >> JPG

下面是coderanch上关于它的讨论:http://www.coderanch.com/t/422868/java/java/converting-WMF-Windows-Meta-File

票数 5
EN

Stack Overflow用户

发布于 2019-12-02 07:28:57

EMF和EMF+是幻灯片的组成部分,因此我为它们开发了一个渲染器作为Apache POI的一部分。至于即将到来的POI-4.1.2,这仍在进行中-如果您有任何渲染问题,请将您的文件上传到我们的bugzilla的new bug report中。

主要描述可以在POI documentation中找到。

以下是摘录:

#1 -通过文件或标准输入使用PPTX2PNG

对于文件系统访问,您需要先将幻灯片/WMF/EMF/EMF+保存到光盘中,然后使用相应的参数调用PPTX2PNG.main()

对于stdin访问,您需要在以下操作之前重定向System.in

代码语言:javascript
复制
/* the file content */
InputStream is = ...;
/* Save and set System.in */
InputStream oldIn = System.in;
try {
    System.setIn(is);
    String[] args = {
        "-format", "png", // png,gif,jpg,svg or null for test
        "-outdir", new File("out/").getCanonicalPath(),
        "-outfile", "export.png",
        "-fixside", "long",
        "-scale", "800",
        "-ignoreParse",
        "stdin"
    };
    PPTX2PNG.main(args);
} finally {
    System.setIn(oldIn);
}

#2 -通过*图片类渲染WMF / EMF / EMF+

代码语言:javascript
复制
File f = samples.getFile("santa.wmf");
try (FileInputStream fis = new FileInputStream(f)) {
    // for WMF
    HwmfPicture wmf = new HwmfPicture(fis);
    // for EMF / EMF+
    HemfPicture emf = new HemfPicture(fis);
    Dimension dim = wmf.getSize();
    int width = Units.pointsToPixel(dim.getWidth());
    // keep aspect ratio for height
    int height = Units.pointsToPixel(dim.getHeight());
    double max = Math.max(width, height);
    if (max > 1500) {
    width *= 1500/max;
    height *= 1500/max;
    }
    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);
    wmf.draw(g, new Rectangle2D.Double(0,0,width,height));
    g.dispose();
    ImageIO.write(bufImg, "PNG", new File("bla.png"));
}
票数 2
EN

Stack Overflow用户

发布于 2013-01-11 21:30:06

您可以对此格式使用different tools。例如,您可以选择GIMP。在Java中,你有一个library for converting WMF files

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14279104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档