我需要使用完整的Java代码将emf、wmf文件格式转换为png或jpeg(因为某些浏览器不支持这些格式)。能否有人指导我如何操作?
提前感谢。
提前感谢。
其他选项:FreeHEP 和 Apache Batik。虽然我还没有尝试过它们。
纯Java解决方案是TwelveMonkeys,它支持使用Batik读取WMF文件。
Batik只能处理带有Aldus Placable Header的旧WMF格式,无法解析其他类型(例如最近在MS Office元数据中)。请参阅WMF格式:http://wvware.sourceforge.net/caolan/ora-wmf.html
提供了一个解决方法:https://github.com/haraldk/TwelveMonkeys/issues/35,即用“伪造”的Aldus Placable Header包装最新的WMF,然后传递给Batik。
否则,ImageMagick(IM)是一个具有安装程序的简单解决方案。顺便说一下,即使使用最新的IM,在Linux中也无法正确转换WMF(会返回黑色图像)。
import org.im4java.core.ConvertCmd;
import org.im4java.core.IM4JavaException;
import org.im4java.core.IMOperation;
import org.im4java.process.ProcessStarter;
import java.io.File;
import java.io.IOException;
public class converter {
public static void main(String arg[]) throws InterruptedException, IOException, IM4JavaException {
String myPath="C:\\Program Files\\ImageMagick-7.0.10-Q16-HDRI";
ProcessStarter.setGlobalSearchPath(myPath);
String input="C:\\Users\\Bagra\\Desktop\\emf files\\two.emf";
String output="C:\\Users\\Bagra\\Desktop\\emf files\\out2.jpg";
convert(input,output);
}
public static void convert(String input,String output)
{
try{
IMOperation img=new IMOperation();
img.addImage();
img.addImage();
ConvertCmd convert=new ConvertCmd()`enter code here`;
convert.run(img,new Object[]{input,output});
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
首先,你需要前往https://imagemagick.org/script/download.php下载ImageMagick-7.0.10-22-Q16-HDRI-x64-dll.exe(如果你使用的是Windows系统)。 但是,在安装选项中一定要小心,选择安装传统实用程序(例如convert)。(这非常重要) 安装完成后,只需使用Java创建一个简单的控制台应用程序即可。
String myPath="C:\\Program Files\\ImageMagick-7.0.10-Q16-HDRI";
ProcessStarter.setGlobalSearchPath(myPath);
你需要将搜索路径设置为已安装的目录。 然后选择一个emf文件和不存在的jpg路径。 更多细节可以参考http://im4java.sourceforge.net/docs/dev-guide.html。 我花了很多时间才弄清楚。希望能帮助到需要这样东西的人。 祝好运。