Java - GIF到base64字符串

时间:2015-03-18 17:20:38

标签: 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);
        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;
}
上面的

代码工作正常,但它丢失了动画

3 个答案:

答案 0 :(得分:1)

你必须使用

public String encodeToString(byte[] src)
BASE64.Encoder

(来自java 8)

答案 1 :(得分:1)

BufferedImage类很可能不支持带动画的图像。因此代码打开并仅将图像解析为第一帧。

而是尝试使用URL.openStream直接获取字节,然后将下载的字节转换为base64。

请注意,这样您无法确定下载的文件实际上是图像,因为您根本没有打开它。这可能需要也可能不需要。

答案 2 :(得分:1)

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

如果您真的想要ImageIO表示,那么您就会因失去动画而陷入困境。