Java将裁剪的图像保存到Postgresql数据库. [英] Java Saving Cropped Image to Postgresql Database.

查看:119
本文介绍了Java将裁剪的图像保存到Postgresql数据库.的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个用于将图像保存到数据库但尚未裁剪的代码,用于使用"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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆