이미지 파일의 데이터 URL이 있으며 다른 기능으로 전달해야합니다. Data-URL에서 BufferedImage까지의이 경로를 따라 byteArray 여야합니다.데이터 URL을 BufferedImage로 변환
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();
}
문제는, 그것은 항상 inputImage에서, ImageIO.read가에 imagetype를 인식하지 않았 음을 의미하는 null의 의미 UnknownImageFormatException 예외를 던졌습니다 :
내 방법은 다음이었다.
나는 ImageIO.getReaderFormatNames를 사용했습니다() 지원되는 파일 이름을 얻을 다음과 같은 목록을 가지고합니다 : 지금까지와 같은 data:image/png;base64,...
또는 data:image/jpg;base64,...
: 같은 내가 통과하려고
Supported Formats:
jpg, BMP, bmp, JPG, jpeg, wbmp, png, JPEG, PNG, WBMP, GIF, gif
dataURLs됩니다 지원 파일 목록에있는 파일이므로 인식해야합니다.
그 밖의 경우에이 경우 inputImage가 null이 될 수 있습니다. 그리고 더 재미있는, 어떻게 해결합니까?
문자열을 Base64에서 ImageIO가 읽을 수있는 바이너리 형식으로 다시 디코딩해야합니다. URL 객체가있는 경우 ImageIO에 직접 전달할 수도 있습니다 – MadProgrammer
@MadProgrammer의 조언에 따라 [ DatatypeConverter'] (http://docs.oracle.com/javase/7/docs/api/javax/xml/bind/DatatypeConverter.html#method_summary)를 사용하여 기본 64 문자열을 다시 'byte []'로 변환합니다. –