Witam !!
Zetknąłem się z następującym problemem. Pobieram w metodzie plik typu UploadedFile (który jest obrazkiem). Następnie chcę zrzucić go na InputStream i wrzucić do obiektu typu Image (żeby dokonać pomniejszenia obrazka). Następnie zmieniony obiekt Image chce z powrotem wrzucić do InputStreama i dodać do bazy danych. Korzystam z klasy ImageIO...
public static void loadImage(UploadedFile image, PreparedStatement psmnt,Connection conn) throws SQLException, FileNotFoundException, IOException{
psmnt = conn.prepareStatement("INSERT INTO public.zdjecie (nazwa,opcje_zdj_id,zdjecie) VALUES (?,?,?)");
psmnt.setString(1, "fotka");
psmnt.setInt(2, 1);
int a = (int)image.getSize();
Image im ;
im = ImageIO.read(image.getInputStream()); // wrzucam inputStream do Imaga
InputStream is2 = image.getInputStream(); // tak wyciągnięty InputStream z UploadedFile działa prawidłowo
ImageInputStream is = ImageIO.createImageInputStream(im); // a tak wyciągnięty niestety jest null'em
psmnt.setBinaryStream(3,(InputStream)is, a);
int s = psmnt.executeUpdate();
System.out.println("INSERT OBRAZKA");
if(s>0) {
System.out.println("Uploaded successfully !");
}
else {
System.out.println("unsucessfull to upload image.");
}
}
Może pomniejszenia obrazka (zmniejszenia rozdzielczości - nie przeskalowania) można dokonać jakoś na InputStreamie - wtedy nie musiałbym się grzebać z Image... Jeśli nie, to może ma ktoś pomysł jak to obejść....