Java取得HEIC图片识别并装换成jpg图片

iosheic 图片

Java客户端
JMagick为ImageMagick提供了一个面向对象的Java接口。 http://www.jmagick.org/ (PS:目前官网打不开2022-07-28 09:59:03)

Im4java是ImageMagick命令行的纯java接口。http://im4java.sourceforge.net/

im4java
im4java 是ImageMagick的第二个Java接口实现,它不是 JMagick的替代品,而是作为一个补充。JMagick是ImageMagick C-API之上的一个轻量级的JNI层,相反,im4java只生成ImageMagick命令的命令行,并将生成的行传递给选中的IM命令(使用java.lang.ProcessBuilder.start()方法)
————————————————

im4java的jar包可以在maven库中找到。

1
2
3
4
5
<dependency>
            <groupId>org.im4java</groupId>
            <artifactId>im4java</artifactId>
              <version>1.4.0</version>
        </dependency>

  


将ImageMagick或者GraphicsMagick安装好后,再配好环境变量。

 

样例代码:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import org.im4java.core.ConvertCmd;
import org.im4java.core.IMOperation;
 
public class Test {
 
    public static void main(String[] args) {
        try {
            zoomImage(1000,800,"F:/u02/origin/20141215/loginbigbg.jpg","F:/u02/origin/20141215/loginbigbg_new.jpg");
        catch (Exception e) {
            e.printStackTrace();
        }
    }
 
    public static void zoomImage(Integer width, Integer height, String srcPath, String newPath) throws Exception {   
        IMOperation op = new IMOperation();   
        op.addImage(srcPath);
        if(width == null){//根据高度缩放图片 
            op.resize(null, height);     
        }else if(height == null){//根据宽度缩放图片 
            op.resize(width, null); 
        }else 
            op.resize(width, height); 
        }
        op.addImage(newPath);
        //这里不加参数或者参数为false是使用ImageMagick,true是使用GraphicsMagick
        ConvertCmd convert = new ConvertCmd();
//        convert.setSearchPath("g:/tool/graphicsmagick-1.3.20-q16");
        convert.setSearchPath("G:/tool/ImageMagick-6.9.0-Q16");
        convert.run(op);   
    }
}

  

 

 

 

其中setSearchPath在Windows环境下是需要设置的。

 

1
ConvertCmd convert = new ConvertCmd();

  

 

这一句,如果只安装了ImageMagick,但是定义时写成了new ConvertCmd(true)是,会报找不到“gm”的错。

 

 
org.im4java.core.CommandException: java.io.FileNotFoundException: gm
    at org.im4java.core.ImageCommand.run(ImageCommand.java:219)
    at com.trs.rk.test.Test.zoomImage(Test.java:31)
    at com.trs.rk.test.Test.main(Test.java:10)

  

 

同理,如果只装了GraphicsMagick,但是new ConvertCmd(false)或者无参数,会报找不到convert的错。

 

org.im4java.core.CommandException: java.io.FileNotFoundException: convert
    at org.im4java.core.ImageCommand.run(ImageCommand.java:219)
    at com.trs.rk.test.Test.zoomImage(Test.java:31)
    at com.trs.rk.test.Test.main(Test.java:10)
 
 

 

 

 安装imageMagic时候要勾上convert那一行,确保安装目录下有convert.exe

 
 
posted @ 2023-02-07 16:12  逐星i  阅读(1797)  评论(0编辑  收藏  举报