У меня есть изображения, хранящиеся в базе данных в виде кодированных строк Base64. Я хочу прочитать эту строку, расшифровать ее в массив байтов и отобразить ее. Пока все хорошо. < /P>
Теперь я также хочу отобразить дополнительную информацию об этом изображении. Меня действительно волнует, когда это изображение было сделано /создано. < /P>
Я попробовал несколько подходов. Когда в файловой системе существует изображение, проблем нет. Однако, когда я читаю кодируемую строку, декодируйте ее в байты, возникает проблема.
com.drewnoakes
metadata-extractor
2.9.0
public void processData(String data) {
if (data == null || data.isEmpty()) {
return;
}
byte[] base64Decoded = DatatypeConverter.parseBase64Binary(data);
read(base64Decoded );
//displayImage();
//displayImageInfo();
}
public void read(byte [] data) {
try {
InputStream inputStream = new ByteArrayInputStream(data);
BufferedImage image = ImageIO.read(inputStream);
retrieveImageInfo();
Metadata metadata = ImageMetadataReader.readMetadata(inputStream);
retrieveAdditiaonlInfo2(metadata);
} catch (Exception e) {
//throw new RuntimeException("Failed to read the image from bytes.", e);
}
}
private void retrieveImageInfo() {
imageWidth = (long) image.getWidth();
imageHeight = (long) image.getHeight();
imageSize = (long) data.length;
}
private void retrieveAdditiaonlInfo2(Metadata metadata) {
for (Directory directory : metadata.getDirectories()) {
for (Tag tag : directory.getTags()) {
System.out.format("[%s] - %s = %s", directory.getName(), tag.getTagName(), tag.getDescription());
System.out.println();
}
if (directory.hasErrors()) {
for (String error : directory.getErrors()) {
System.err.format("ERROR: %s", error);
System.err.println();
}
}
}
}
< /code>
Это хорошо работает для изображений, которые были прочитаны из файлов. Но для нашей базы данных это не работает. В нем говорится, < /p>
, вызванное: java.io.ioexception: поток окончательно, до того, как может быть определено магическое число файла. Описание здесь "src =" https://i.sstatic.net/zjlet.jpg "/>
Подробнее здесь: https://stackoverflow.com/questions/366 ... ages-bytes