当前位置:   article > 正文

踩坑ImageMagick将ios图片文件HEIC格式转jpg/png等_imagemagick heic

imagemagick heic

近期业务部门要求将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的引擎文件。

  1. org.im4java.core.CommandException: java.io.FileNotFoundException: convert
  2.     at org.im4java.core.ImageCommand.run(ImageCommand.java:219)

3、功能开发

  1. private static final String IMAGE_MAGICK_PATH = "D:/msgic/ImageMagick-7.1.0-Q16-HDRI";
  2. private static final String SOURCE_PATH="D:/WeChat/WeChat Files/wxid_8386643866212/FileStorage/File/2022-10/1/1";
  3. private static final String TARGET_PATH="D:/WeChat/WeChat Files/wxid_8386643866212/FileStorage/File/2022-10/1/1";
  4. public static void main(String[] args) {
  5. ProcessStarter.setGlobalSearchPath(IMAGE_MAGICK_PATH);
  6. File dir = new File(SOURCE_PATH);
  7. File[] dirFiles = dir.listFiles();
  8. for(File file:dirFiles){
  9. try {
  10. IMOperation op = new IMOperation();
  11. //op.resize(400,400);
  12. op.addImage(file.getPath());
  13. op.negate();
  14. File outFile=new File(TARGET_PATH+File.separator+getFolderName(file.getName())+".jpg");
  15. op.addImage(outFile.getPath());
  16. //启动
  17. ConvertCmd cmd = new ConvertCmd();
  18. cmd.setSearchPath(IMAGE_MAGICK_PATH);
  19. cmd.run(op);
  20. } catch (IOException e) {
  21. e.printStackTrace();
  22. } catch (InterruptedException e) {
  23. e.printStackTrace();
  24. } catch (IM4JavaException e) {
  25. e.printStackTrace();
  26. }
  27. }
  28. }
  29. public static String getFolderName(String fileName) {
  30. if(StringUtils.isEmpty(fileName)){
  31. return null;
  32. }
  33. if(fileName.lastIndexOf(".") != -1 && fileName.lastIndexOf(".") != 0){
  34. return fileName.substring(0,fileName.lastIndexOf("."));
  35. }
  36. return null;
  37. }

完美实现功能

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/902171
推荐阅读
相关标签
  

闽ICP备14008679号