Reputation: 91
I want to insert image into derby database
Steps I followed:
Read images from the document:
public Image[] ReadImg() throws IOException {
Image[] img;
String[] pname;
int[] imageid;
int l;
XWPFDocument doc = new XWPFDocument(new FileInputStream("import.docx"));
BufferedImage jpg = null;
List<XWPFPictureData> pic = doc.getAllPictures();
int length = pic.size();
img = new Image[length];
pname = new String[length];
for (int i = 0; i < length; i++) {
XWPFPictureData pict = pic.get(i);
pname[i] = pict.getFileName();
}
imageid = new int[length];
imageid = sorting(pname, length);
for (int i = 0; i < length; i++) {
XWPFPictureData pict = pic.get(imageid[i]);
System.out.println(pict.getFileName());
byte[] data = pict.getData();
jpg = ImageIO.read(new ByteArrayInputStream(data));
String[] prop = jpg.getPropertyNames();
img[i] = jpg;
}
return img;
}
Insert image into derby database:
a) I have created column image with "BLOB" datatype
for(int k=0;k<img.length;k++)
{
PreparedStatement stmt2 = con.prepareStatement("insert into APP.IMAGES(IMAGES) values(?)");
InputStream f=new FileInputStream(img[k]);
stmt2.setBlob(1, f);
stmt2.executeUpdate();
stmt2.close();
}
I don't know what to do at the step InputStream f=new FileInputStream(img[k]);
How to convert my image datatype and put it here?
Could you please help me to resolve it?
Upvotes: 1
Views: 5130
Reputation: 91
Finally I got the answer for my query
ByteArrayOutputStream b=new ByteArrayOutputStream();
ImageIO.write(img[k], "jpeg", b);
byte[] imageInByte = b.toByteArray();
b.close();
InputStream fis = new ByteArrayInputStream(imageInByte);
stmt2.setBlob(1, fis);
stmt2.executeUpdate();
Upvotes: 3