Spring一行代码搞定图片url地址转换为Base64,超简单!!!!

我们首先通过URL类来创建一个指向图片资源的URL链接,然后使用IOUtils.toByteArray(url)将该链接对应的字节流转换为字节数组,最后使用Java 8新增的Base64类将其编码为Base64格式的字符串。

具体代码实现:

import org.apache.commons.io.IOUtils;
import java.net.URL;
import java.io.IOException;
import java.util.Base64;

/**
 * 将指定URL地址中的图片文件转换为Base64格式的字符串
 *
 * @param imageUrl 图片资源的URL地址
 * @return Base64格式的字符串
 * @throws IOException 如果读取URL链接对应的字节流时出现IO异常,则会抛出该异常
 */
public static String encodeToBase64(String imageUrl) throws IOException {
    // 使用 Java 8 引入的 Base64 类获取编码器,并将 URL 对象转换为字节数组后进行编码
    return Base64.getEncoder().encodeToString(IOUtils.toByteArray(new URL(imageUrl)));
}

如果你不想使用Apache Commons IO库,你可以使用Java标准库提供的java.net.URLjava.io.InputStream类和流操作来读取URL地址中的图片文件并将其编码为Base64格式的字符串,代码实现如下:

import java.io.InputStream;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.Base64;

public class ImageUtils {
    public static String encodeToBase64(String imageUrl) throws Exception {
        URL url = new URL(imageUrl);
        InputStream inputStream = url.openStream();
        byte[] bytes = toByteArray(inputStream);
        inputStream.close();
        return Base64.getEncoder().encodeToString(bytes);
    }

    private static byte[] toByteArray(InputStream inputStream) throws Exception {
        byte[] buffer = new byte[1024];
        int len;
        try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
            while ((len = inputStream.read(buffer)) != -1) {
                outputStream.write(buffer, 0, len);
            }
            return outputStream.toByteArray();
        }
    }
}

我们首先使用java.net.URL类创建一个指向图片资源的URL链接,然后使用该链接的openStream()方法打开一个输入流,从而可以读取到图片文件对应的字节流。接着,我们自己封装了一个toByteArray()方法,使用一个字节数组缓存循环读取输入流中的数据,并将读取到的数据写入到一个输出流中。最后,我们使用Java 8新增的Base64类将输出流中的字节编码为Base64字符串,并返回给调用者。需要注意的是,在读取完成后,我们需要显式地关闭输入流,以释放相关资源。
 

猜你喜欢

转载自blog.csdn.net/Mr_Dong_cson/article/details/130748350