Java-GIF到base64字符串

Java-GIF到base64字符串,java,gif,Java,Gif,如何将gif转换为base64 这是我到目前为止所做的尝试 public static String convertImageToBase64(String urlString, String type ){ String imageString = null; ByteArrayOutputStream bos = new ByteArrayOutputStream(); try { URL url = new URL(urlString);

如何将gif转换为base64

这是我到目前为止所做的尝试

public static String convertImageToBase64(String urlString, String type ){

    String imageString = null;
    ByteArrayOutputStream bos = new ByteArrayOutputStream();

    try {
        URL url = new URL(urlString);
        BufferedImage img = ImageIO.read( url );

        ImageIO.write(img, type, bos);
        byte[] imageBytes = bos.toByteArray();

        BASE64Encoder encoder = new BASE64Encoder();
        imageString = encoder.encode(imageBytes);

        bos.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return imageString;
}
上面的代码正在工作,但它丢失了您必须使用的动画

public String encodeToString(byte[] src)
类的
BASE64.Encoder
(来自Java8)

您必须使用

public String encodeToString(byte[] src)
类的
BASE64.Encoder
(来自Java8)

您必须使用

public String encodeToString(byte[] src)
类的
BASE64.Encoder
(来自Java8)

您必须使用

public String encodeToString(byte[] src)

类的
BASE64.Encoder
(来自java 8)

很可能类BuffereImage不支持带有动画的图像。因此,代码只打开并解析图像到第一帧

相反,请尝试直接使用获取字节,然后将下载的字节转换为base64


请注意,通过这种方式,您无法确保下载的文件实际上是一个图像,因为您根本没有打开它。这可能需要,也可能不需要。

很可能BuffereImage类不支持带有动画的图像。因此,代码只打开并解析图像到第一帧

相反,请尝试直接使用获取字节,然后将下载的字节转换为base64


请注意,通过这种方式,您无法确保下载的文件实际上是一个图像,因为您根本没有打开它。这可能需要,也可能不需要。

很可能BuffereImage类不支持带有动画的图像。因此,代码只打开并解析图像到第一帧

相反,请尝试直接使用获取字节,然后将下载的字节转换为base64


请注意,通过这种方式,您无法确保下载的文件实际上是一个图像,因为您根本没有打开它。这可能需要,也可能不需要。

很可能BuffereImage类不支持带有动画的图像。因此,代码只打开并解析图像到第一帧

相反,请尝试直接使用获取字节,然后将下载的字节转换为base64


请注意,通过这种方式,您无法确保下载的文件实际上是一个图像,因为您根本没有打开它。这可能需要,也可能不需要。

我假设您需要的是GIF文件本身的Base64表示,而不是ImageIO表示。如果您有一个没有内置Base64支持的较旧版本的Java,我们将完成这项工作。使用
URL.openStream()
,而不是使用ImageIO,将文件读入字节数组,然后调用
Base64.encodeBase64String
。如果要对结果URL进行编码,请调用
Base64.encodeBase64URLSafe


如果您真的想要ImageIO表示,那么您将无法获得动画。

我假设您想要的是GIF文件本身的Base64表示,而不是ImageIO表示。如果您有一个没有内置Base64支持的较旧版本的Java,我们将完成这项工作。使用
URL.openStream()
,而不是使用ImageIO,将文件读入字节数组,然后调用
Base64.encodeBase64String
。如果要对结果URL进行编码,请调用
Base64.encodeBase64URLSafe


如果您真的想要ImageIO表示,那么您将无法获得动画。

我假设您想要的是GIF文件本身的Base64表示,而不是ImageIO表示。如果您有一个没有内置Base64支持的较旧版本的Java,我们将完成这项工作。使用
URL.openStream()
,而不是使用ImageIO,将文件读入字节数组,然后调用
Base64.encodeBase64String
。如果要对结果URL进行编码,请调用
Base64.encodeBase64URLSafe


如果您真的想要ImageIO表示,那么您将无法获得动画。

我假设您想要的是GIF文件本身的Base64表示,而不是ImageIO表示。如果您有一个没有内置Base64支持的较旧版本的Java,我们将完成这项工作。使用
URL.openStream()
,而不是使用ImageIO,将文件读入字节数组,然后调用
Base64.encodeBase64String
。如果要对结果URL进行编码,请调用
Base64.encodeBase64URLSafe


如果你真的想要ImageIO表示,那么你就必须放弃动画。

我使用的是java8,你是说从java.Util开始,我很难实例化BASE64.Encoder类。。你能展示我需要做的更多吗?只需编写以下imageString=Base64.encodeToString(imageBytes);我使用java8,你是说从java.Util开始,我很难实例化BASE64.Encoder类。。你能展示我需要做的更多吗?只需编写以下imageString=Base64.encodeToString(imageBytes);我使用java8,你是说从java.Util开始,我很难实例化BASE64.Encoder类。。你能展示我需要做的更多吗?只需编写以下imageString=Base64.encodeToString(imageBytes);我使用java8,你是说从java.Util开始,我很难实例化BASE64.Encoder类。。你能展示我需要做的更多吗?只需编写以下imageString=Base64.encodeToString(imageBytes);