Java将裁剪的图像保存到Postgresql数据库. [英] Java Saving Cropped Image to Postgresql Database.
问题描述
我有一个用于将图像保存到数据库但尚未裁剪的代码,用于使用"FileInputStream"将图像保存到数据库.
FileInputStream imgByte; File imgLocation = new File(image_location); stmt =con.prepareStatement("INSERT INTO image(image_id, image_data, image_name, image_ext)VALUES (?, ?, ?, ?);"); imgByte = new FileInputStream(imgLocation); stmt.setInt(1, image_id+1); stmt.setBinaryStream(2, (InputStream)imgByte, (int)(imgLocation.length())); stmt.setString(3, image_name); stmt.setString(4, image_ext); stmt.executeUpdate();
我还有一个用于裁剪图像并显示裁剪图像的代码,该代码用于Servlet,我还使用了jquery(裁剪)和jsp(将数据/值发送到servlet)来获取变量data/value("t", "l","w","h")
int t=Integer.parseInt(req.getParameter("t")); int l=Integer.parseInt(req.getParameter("l")); int w=Integer.parseInt(req.getParameter("w")); int h=Integer.parseInt(req.getParameter("h")); String imagePath = getServletContext().getRealPath("/")+req.getParameter("i"); BufferedImage outImage=ImageIO.read(new File(imagePath)); BufferedImage cropped=outImage.getSubimage(l, t, w, h); ByteArrayOutputStream out=new ByteArrayOutputStream(); ImageIO.write(cropped,req.getParameter("f"), out); ImageIO.write(cropped,req.getParameter("f"), new File(getServletContext().getRealPath("")+System.getProperty("file.separator")+"cropped.jpg")); ServletOutputStream wrt=res.getOutputStream(); wrt.write(out.toByteArray()); wrt.flush(); wrt.close();
现在我的问题是输出"中的字节数组变量是"ByteArrayOutputStream"数据类型,如何将其转换为"FileInputStream",其中"FileInputStream"用于将图像保存到数据库.方案
从输出流中读取字节;尝试byte[] bytes = out.toByteArray()
.
I have a code for saving an image to database but not yet cropped, to save an image to database I''m using "FileInputStream"
FileInputStream imgByte; File imgLocation = new File(image_location); stmt =con.prepareStatement("INSERT INTO image(image_id, image_data, image_name, image_ext)VALUES (?, ?, ?, ?);"); imgByte = new FileInputStream(imgLocation); stmt.setInt(1, image_id+1); stmt.setBinaryStream(2, (InputStream)imgByte, (int)(imgLocation.length())); stmt.setString(3, image_name); stmt.setString(4, image_ext); stmt.executeUpdate();
I also have a code for cropping an image and displaying the cropped image, this code is for Servlet, I also used jquery(cropped) and jsp(send data/value to servlet) to get the variables data/value("t", "l", "w", "h")
int t=Integer.parseInt(req.getParameter("t")); int l=Integer.parseInt(req.getParameter("l")); int w=Integer.parseInt(req.getParameter("w")); int h=Integer.parseInt(req.getParameter("h")); String imagePath = getServletContext().getRealPath("/")+req.getParameter("i"); BufferedImage outImage=ImageIO.read(new File(imagePath)); BufferedImage cropped=outImage.getSubimage(l, t, w, h); ByteArrayOutputStream out=new ByteArrayOutputStream(); ImageIO.write(cropped,req.getParameter("f"), out); ImageIO.write(cropped,req.getParameter("f"), new File(getServletContext().getRealPath("")+System.getProperty("file.separator")+"cropped.jpg")); ServletOutputStream wrt=res.getOutputStream(); wrt.write(out.toByteArray()); wrt.flush(); wrt.close();
Now my problem is the Array of Byte in "out" variable is a "ByteArrayOutputStream" datatype how can I convert that to "FileInputStream" where the "FileInputStream" used in saving the image to database.
Read the bytes from the output stream; try byte[] bytes = out.toByteArray()
.
这篇关于Java将裁剪的图像保存到Postgresql数据库.的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!