Bir görüntü dosyasından bir Veri-URL'im var ve bunu başka bir işleve aktarmak zorundayım. Data-URL'den BufferedImage'a bu yol boyunca bir byteArray olması gerekir.Veri Dosyasını BufferedImage'ye Dönüştürme
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();
}
sorundur, her zaman inputImage, ImageIO.read ImageType tanımadığı anlamına gelir ki, null anlamına UnknownImageFormatException İstisna, atar:
yaklaşımım şu oldu.
Ben ImageIO.getReaderFormatNames kullandım() desteklenen dosya adları almak ve aşağıdaki liste var etmek: Bildiğim kadarıyla olarak data:image/png;base64,...
veya data:image/jpg;base64,...
: gibi geçmek deneyin
Supported Formats:
jpg, BMP, bmp, JPG, jpeg, wbmp, png, JPEG, PNG, WBMP, GIF, gif
dataURLs edilir Anladığım kadarıyla, bunlar desteklenen dosya listesindedir ve bu nedenle tanınmalıdır.
Bu durumda inputImage'ın null olması neye sebep olabilir? Ve daha ilginç, nasıl çözerim?
Dizgeyi base64'ten ImageIO'nun okuyabileceği bir ikili formata dönüştürmeniz gerekiyor veya bir URL nesnesiniz varsa, belki de doğrudan ImageIO'ya iletmeniz gerekiyor – MadProgrammer
@MadProgrammer'ın önerisine ek olarak, DatatypeConverter'] (http://docs.oracle.com/javase/7/docs/api/javax/xml/bind/DatatypeConverter.html#method_summary) tabanı 64 dizgisini bir bayt [] 'a dönüştürmek için. –