批量将 svg 文件转成 png 文件

批量将 svg 文件转成 png 文件

1、导入依赖
        <!-- batik -->
        <dependency>
            <groupId>batik</groupId>
            <artifactId>batik-transcoder</artifactId>
            <version>1.6-1</version>
        </dependency>
2、代码
package com.example.demo;

import org.apache.batik.transcoder.Transcoder;
import org.apache.batik.transcoder.TranscoderException;
import org.apache.batik.transcoder.TranscoderInput;
import org.apache.batik.transcoder.TranscoderOutput;
import org.apache.batik.transcoder.image.PNGTranscoder;
import org.apache.commons.lang.StringUtils;

import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/**
 * 将 svg 转成 png
 */
public class BatikDemo {

    public static void main(String[] args) {
        // svg 文件所在路径
        String path = "D:\\Project\\WeChat\\GitHub\\GBlog-wx\\miniprogram\\images\\icon";
        List<File> allFile = getAllFile(path);
        if (allFile == null) {
            return;
        }
        allFile.forEach((file) -> {
            String absolutePath = file.getAbsolutePath();
            String filePath = absolutePath.replace(".svg", ".png");
            File pngFile = new File(filePath);
            try {
                convertSvg2Png(file, pngFile);
            } catch (Exception e) {
                e.printStackTrace();
            }
        });
        System.out.println("end");
    }


	/**
	 *  来源:https://blog.csdn.net/rgbhi/article/details/110564262
	 */
    public static void convertSvg2Png(File svg, File png) throws IOException, TranscoderException {
        InputStream in = new FileInputStream(svg);
        OutputStream out = new FileOutputStream(png);
        out = new BufferedOutputStream(out);

        Transcoder transcoder = new PNGTranscoder();
        try {
            TranscoderInput input = new TranscoderInput(in);
            try {
                TranscoderOutput output = new TranscoderOutput(out);
                transcoder.transcode(input, output);
            } finally {
                out.close();
            }
        } finally {
            in.close();
        }
    }



    /**
     *  来源:https://blog.csdn.net/m0_47406832/article/details/120197446
     *
     * 获取指定文件夹下所有文件,不含文件夹
     *
     * @param dirFilePath 文件夹路径
     * @return
     */
    public static List<File> getAllFile(String dirFilePath) {
        if (StringUtils.isBlank(dirFilePath))
            return null;
        return getAllFile(new File(dirFilePath));
    }

    /**
     * 获取指定文件夹下所有文件,不含文件夹
     *
     * @param dirFile 文件夹
     * @return
     */
    public static List<File> getAllFile(File dirFile) {
        // 如果文件夹不存在或着不是文件夹,则返回 null
        if (Objects.isNull(dirFile) || !dirFile.exists() || dirFile.isFile())
            return null;

        File[] childrenFiles = dirFile.listFiles();
        if (Objects.isNull(childrenFiles) || childrenFiles.length == 0)
            return null;

        List<File> files = new ArrayList<>();
        for (File childFile : childrenFiles) {

            // 如果时文件,直接添加到结果集合
            if (childFile.isFile()) {
                files.add(childFile);
            } else {
                // 如果是文件夹,则将其内部文件添加进结果集合
                List<File> cFiles = getAllFile(childFile);
                if (Objects.isNull(cFiles) || cFiles.isEmpty()) continue;
                files.addAll(cFiles);
            }

        }

        return files;
    }


}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 后台可以使用 Apache Batik 库将 SVG 换为 PNG。Apache Batik 是一个开源的 Java 库,提供了许多用于处理 SVG 的 API。 以下是一个简单的 Java 代码示例,用于将 SVG 文件换为 PNG 文件: ```java import java.io.*; import org.apache.batik.transcoder.image.PNGTranscoder; import org.apache.batik.transcoder.TranscoderInput; import org.apache.batik.transcoder.TranscoderOutput; public class SvgToPngConverter { public static void main(String[] args) { try { // 创建码器 PNGTranscoder transcoder = new PNGTranscoder(); // 设置输入输出 String svgFileName = "input.svg"; String pngFileName = "output.png"; TranscoderInput input = new TranscoderInput(new FileInputStream(svgFileName)); TranscoderOutput output = new TranscoderOutput(new FileOutputStream(pngFileName)); // 开始换 transcoder.transcode(input, output); // 关闭流 input.getInputStream().close(); output.getOutputStream().close(); System.out.println("SVG 文件换成 PNG 文件成功!"); } catch (Exception e) { System.err.println("SVG 文件换成 PNG 文件失败:" + e.getMessage()); } } } ``` 在上面的代码中,我们首先创建了一个 `PNGTranscoder` 对象,然后指定输入和输出文件名,最后调用 `transcode` 方法进行换。 请注意,该代码需要引入 Apache Batik 库,可以在 Maven 中添加以下依赖项: ```xml <dependency> <groupId>org.apache.xmlgraphics</groupId> <artifactId>batik-transcoder</artifactId> <version>1.14</version> </dependency> ``` 希望对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值