赞
踩
近期业务部门要求将heic文件转成jpg文件格式,刚开始使用了各种ImageReader都不可以,后来接触ImageMagick后,发现可以中间也踩了一些坑,现在做一下记录踩过的那些坑。
1、首先需要做的准备工作--下载ImageMagick和org.im4java的插件
ImageMagick下载页面:ImageMagick – Download
下载这个版本
org.im4java的pom文件依赖包
<dependency> <groupId>org.im4java</groupId> <artifactId>im4java</artifactId> <version>1.4.0</version> </dependency>
2、安装ImageMagick
安装7.0以后的版本会自动配置环境变量,如果安装过程中遇到有这个选项要打上勾,还有安装目录中间不要有中文和空格,笔者第一次安装的时候安装目录在D:\Program Files (x86) 这样的目录结构上,发现程序会一直报这个异常,说明im4java命令找不到imagemagick的引擎文件。
- org.im4java.core.CommandException: java.io.FileNotFoundException: convert
- at org.im4java.core.ImageCommand.run(ImageCommand.java:219)
3、功能开发
- private static final String IMAGE_MAGICK_PATH = "D:/msgic/ImageMagick-7.1.0-Q16-HDRI";
- private static final String SOURCE_PATH="D:/WeChat/WeChat Files/wxid_8386643866212/FileStorage/File/2022-10/1/1";
- private static final String TARGET_PATH="D:/WeChat/WeChat Files/wxid_8386643866212/FileStorage/File/2022-10/1/1";
- public static void main(String[] args) {
- ProcessStarter.setGlobalSearchPath(IMAGE_MAGICK_PATH);
- File dir = new File(SOURCE_PATH);
- File[] dirFiles = dir.listFiles();
- for(File file:dirFiles){
- try {
- IMOperation op = new IMOperation();
- //op.resize(400,400);
- op.addImage(file.getPath());
- op.negate();
- File outFile=new File(TARGET_PATH+File.separator+getFolderName(file.getName())+".jpg");
- op.addImage(outFile.getPath());
- //启动
- ConvertCmd cmd = new ConvertCmd();
- cmd.setSearchPath(IMAGE_MAGICK_PATH);
- cmd.run(op);
- } catch (IOException e) {
- e.printStackTrace();
- } catch (InterruptedException e) {
- e.printStackTrace();
- } catch (IM4JavaException e) {
- e.printStackTrace();
- }
- }
- }
-
- public static String getFolderName(String fileName) {
- if(StringUtils.isEmpty(fileName)){
- return null;
- }
- if(fileName.lastIndexOf(".") != -1 && fileName.lastIndexOf(".") != 0){
- return fileName.substring(0,fileName.lastIndexOf("."));
- }
- return null;
- }
完美实现功能
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。