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ć?