How do we convert WMF / EMF (MS metafiles) to standard images, such as JPG or PNG, using any Java API?

I am stuck in converting WMF / EMF images to a standard image format such as JPG or PNG using Java.

What are the best options available?

+5
source share
5 answers

The batik library is a toolkit for processing SVG in Java. There are converters included as WMFTranscoder for converting from WMF to SVG and JPEGTranscoder and PNGTranscoder for converting SVG to JPEG / PNG. See Transcoder API Docs for more information .

ImageMagick. Java, Java: im4java JMagick.

+1

wmf - . .svg .pdf.

1) wmf2fig --auto XXXX.wmf

2) fig2pdf --nogv XXXX.fig

python script

import subprocess as sbp
a = sbp.Popen("ls *.wmf",shell=True, stderr=sbp.PIPE, stdout=sbp.PIPE)
filelist = a.communicate()[0].splitlines()

for ele in filelist:
    cmdarg = 'wmf2fig --auto '+ ele.rsplit('.',1)[0]+'.wmf'
    a = sbp.Popen(cmdarg, shell=True, stderr=sbp.PIPE, stdout=sbp.PIPE)
    out = a.communicate()

for ele in filelist:
    cmdarg = 'fig2pdf --nogv '+ ele.rsplit('.',1)[0]+'.fig'
    a = sbp.Popen(cmdarg, shell=True, stderr=sbp.PIPE, stdout=sbp.PIPE)
    out = a.communicate()

cmdarg = 'rm *.fig'
a = sbp.Popen(cmdarg, shell=True, stderr=sbp.PIPE, stdout=sbp.PIPE)
out = a.communicate()
+1

Windows, SWT .

    Image image = new Image(Display.getCurrent(), "test.wmf");                
    ImageLoader loader = new ImageLoader();
    loader.data = new ImageData[] { image.getImageData() };
    try(FileOutputStream stream = new FileOutputStream("test.png"))
    {
        loader.save(stream, SWT.IMAGE_PNG);
    }
    image.dispose();

SWT - Java , GDI , WMF.

+1

.

  • ( ) Java, , .
  • BufferedImage , , .
  • Graphics BufferedImage.
  • renderComponent.paintComponent(Graphics)
  • , ImageIO.write().

Swing: JFrame 2-5. 1. , Google.

0

Batik ( vanje answer), ImageIO SGV WMF/EMF.

:

ImageIO.write(ImageIO.read(wmfFile), pngFile, "png");

GitHub.

ImageIO , im4java JMagick - .

0
source

All Articles