Вы смотрели на то, что вы получаете?
Причините этот код
public static void main(String[] args) {
String base64String = "data:image/png;base64,iVBORw0...=";
String[] strings = base64String.split(",");
List<String> param = new ArrayList<String>();
param.add(strings[1]);
BufferedImage bi = decodeToImage(param);
System.out.println("BufferedImage: " + bi);
}
static BufferedImage decodeToImage(List<String> imageStrings) {
BufferedImage image = null;
ByteBuffer imageByteBuffer = ByteBuffer.allocate(500000000);
try {
for (String imageString : imageStrings) {
imageByteBuffer.put(DatatypeConverter.parseBase64Binary(imageString));
}
ByteArrayInputStream bis = new ByteArrayInputStream(imageByteBuffer.array());
image = ImageIO.read(bis);
bis.close();
} catch (Exception e) {
System.out.println("error?");
e.printStackTrace();
}
return image;
}
Распечатает
BufferedImage: BufferedImage @ 7eda2dbb: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 цветового пространства = java.awt.color.ICC_ColorSpace@6576fe71 232 #numDataElements 4 dataOff [0] = 3
Но если я просто дам ему весь текст base64 с информацией об изображении впереди
public static void main(String[] args) {
String base64String = "data:image/png;base64,iVBORw0...=";
String[] strings = base64String.split(",");
List<String> param = new ArrayList<String>();
param.add(base64String); //THIS IS THE DIFFERENT LINE
BufferedImage bi = decodeToImage(param);
System.out.println("BufferedImage: " + bi);
}
Будет напечатано ноль
Заменить base64String на действительный png с кодировкой base 64 из
http://freeonlinetools24.com/base64-image
Я сократил его в этом примере, иначе он станет длиной в несколько тысяч символов.