Преобразовать BufferedInputStream в изображение [дубликат]
На этот вопрос уже есть ответ здесь:
ImageIO.read возвращает ноль в байтовом массиве 1 ответУ меня проблемы с превращением моего объекта в буферизованное изображение, чтобы я мог его использовать. Я'я получаю блоб (изображение jpg) из своей базы данных, которую я загрузил с помощью inputtream. В моей базе данных он хранится как BufferedInputStream, который я замечаю. Я получаю шарик просто отлично, это куча странных символов и говорит, что это JPG, поэтому изображение должно быть в порядке. Кто-нибудь может определить, что яя делаю неправильно? Может быть, я конвертирую это неправильно? В image = ImageIO.read (new ByteArrayInputStream (data)); Изображение возвращает ноль.
@GET
@Path("{id}")
@Produces("image/*")
public Response post(@PathParam("id") String id) throws IOException {
Connection con = connection();
Blob blob = getPhoto(con);
BufferedImage image = null;
byte[] data = null;
int blobLength = 0;
try {
blobLength = (int) blob.length();
data = blob.getBytes(1, blobLength);
image = ImageIO.read(new ByteArrayInputStream(data));
// ImageIO.write(image, "JPEG", new File("C:/Users/Nicolas/Desktop/image.jpg"));
} catch (SQLException e2) {
e2.printStackTrace();
}
return Response.ok(image).build();
}
Как я пишу в базу данных
public void postPhoto(Connection con, InputStream uploadedInputStream){
String mySQL = "INSERT INTO photos (photo) values (?)";
PreparedStatement pStmt = con.prepareStatement(mySQL);
pStmt.setBlob(1, uploadedInputStream);
pStmt.execute();
}
Как отправить файл в мой сервлет
var fileInput = document.getElementById('file');
var file = fileInput.files[0];
var formData = new FormData();
formData.append("file", file);
var parameters="first="+firstName+"&last="+lastName+"&file="+file;
xmlhttp.open("post","http://localhost:8080/restService/api/submitinfo",true);
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlhttp.send(formData);