Konwertuj adres danych na BufferedImage

Mam adres URL danych z pliku obrazu i muszę go przekazać do innej funkcji. Wzdłuż tej ścieżki od Data-URL do BufferedImage musi być bajtArray.

moje podejście było następujące:

String dataUrl;
byte[] imageData = dataUrl.getBytes();

// pass the byteArray along the path

// create BufferedImage from byteArray
BufferedImage inputImage = ImageIO.read(new ByteArrayInputStream(imageData));

// If the picture is null, then throw an unsupported image exception.
if (inputImage == null) {
    throw new UnknownImageFormatException();
}

Problem polega na tym, że zawsze zgłasza wyjątek UnknownImageFormatException, co oznacza, że ​​inputImage ma wartość null, co oznacza, że ​​ImageIO.read nie rozpoznał typu imagetype.

Użyłem ImageIO.getReaderFormatNames (), aby uzyskać obsługiwane nazwy plików i uzyskać następującą listę:

Supported Formats: 
jpg, BMP, bmp, JPG, jpeg, wbmp, png, JPEG, PNG, WBMP, GIF, gif

Dane, które próbuję przekazać, są jak:data:image/png;base64,... lubdata:image/jpg;base64,...

O ile rozumiem, są one w obsługiwanej liście plików i dlatego powinny być rozpoznawane.

Co jeszcze może spowodować, że inputImage będzie w tym przypadku null? Co ciekawsze, jak go rozwiązać?

questionAnswers(2)

yourAnswerToTheQuestion