使用Apache Commons将Image转换为Base64

时间:2016-05-25 08:00:34

标签: java image base64 apache-commons

我正在使用Sun Micro Systems的BASE64Encoder将图像转换为Base64字符串。问题是我在构建期间收到了警告,我不想要

Java代码 ..

     public static String encodeToString(BufferedImage image, String type) {
    String base64String = null;
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    try {
    ImageIO.write(image, type, bos);
    byte[] imageBytes = bos.toByteArray();
    BASE64Encoder encoder = new BASE64Encoder();
    base64String = encoder.encode(imageBytes);
    bos.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    return base64String;
    }

警告

  [javac] /Users/lucy/dev/workspace/flsv2/src/util/BufferImage.java:53: warning: BASE64Encoder is internal proprietary API and may be removed in a future release 
  [javac] BASE64Encoder encoder = new BASE64Encoder(); 
  [javac] ^ 
  [javac] /Users/lucy/dev/workspace/flsv2/src/util/BufferImage.java:53: warning: BASE64Encoder is internal proprietary API and may be removed in a future release 
  [javac] BASE64Encoder encoder = new BASE64Encoder(); 
  [javac] ^ 
  [javac] 2 warnings

有没有办法在上面的方法中使用Apache Commons,以便不会产生警告?请帮助..

1 个答案:

答案 0 :(得分:3)

请不要使用内部com.sun.*个包裹。如果您使用的是v6或更高版本,则可以使用DatatypeConverter。那么你的代码将如下所示。

String base64String = DatatypeConverter.printBase64Binary(baos.toByteArray());
byte[] bytearray = DatatypeConverter.parseBase64Binary(base64String);

或者,

您还可以使用:java.util.Base64

中添加的1.8
String base64String = new String(Base64.getEncoder().encode(bytesToEncode));
byte[] decordedValue = Base64.getDecoder().decode(base64String);

或者,您可以在apache commons中创建一个方法调用过程,该过程在下面给出

import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.binary.StringUtils;

public String decode(String s) {
    return StringUtils.newStringUtf8(Base64.decodeBase64(s));
}
public String encode(String s) {
    return Base64.encodeBase64String(StringUtils.getBytesUtf8(s));
}

资源链接:

  1. org.apache.commons.codec.binary.base64 Example
  2. how to avoid warning for the Base 64?