从数据库中检索不同大小的图像

时间:2012-02-18 09:53:37

标签: java database image

我已将一些图像存储在数据库中,而检索它们时我想将其调整为177x122。我怎么能在JAVA中做到这一点? 以下是我用于从数据库中检索图像的一些代码,需要进行哪些更改才能获得177x122的图像。

PreparedStatement pstm1 = con.prepareStatement("select * from image");
            ResultSet rs1 = pstm1.executeQuery();
            while(rs1.next()) {
                InputStream fis1;
                FileOutputStream fos;
                String image_id;
                try {
                    fis1 = rs1.getBinaryStream("image");
                    image_id=rs1.getString("image_id");
                    fos = new FileOutputStream(new File("images" + (image_id) + ".jpg"));
                    int c;
                    while ((c = fis1.read()) != -1) {
                        fos.write(c);
                    }
                    fis1.close();
                    fos.close();
                    JOptionPane.showMessageDialog(null, "Image Successfully Retrieved");

                } catch (Exception ex) {
                    System.out.println(ex);
                }
            } 

2 个答案:

答案 0 :(得分:3)

您可以使用AWT提供的BufferedImage和Graphics2D类来调整图像大小。 Source

BufferedImage resizedImage = new BufferedImage(IMG_WIDTH, IMG_HEIGHT, type);
Graphics2D g = resizedImage.createGraphics();
g.drawImage(originalImage, 0, 0, IMG_WIDTH, IMG_HEIGHT, null);
g.dispose();

答案 1 :(得分:1)

假设image列中的数据是Java Image I / O可以读取的图像格式(例如JPEG和PNG),Thumbnailator库应该能够实现此目的。< / p>

ResultSet中的图像数据作为InputStream检索并写入指定文件的代码可以这样写:

// Get the information we need from the database.
String imageId = rs1.getString("image_id");
InputStream is = rs1.getBinaryStream("image");

// Perform the thumbnail generation.
// You may want to substitute variables for the hard-coded 177 and 122.
Thumbnails.of(is)
  .size(177, 122)
  .toFile("images" + (imageId) + ".jpg");

// Thumbnailator does not automatically close InputStreams
// (which is actually a good thing!), so we'll have to close it.
is.close();

(我应该声称我实际上并没有针对实际数据库运行此代码。)

Thumbnailator将从InputStream列中检索image检索二进制数据中的图像数据,然后调整图像大小以适应172 x 122区域,最后将缩略图输出为JPEG指定的文件。

默认情况下,Thumbnailator会在调整图像大小时保留原始图像的纵横比(以防止缩略图看起来失真),因此图像大小不一定是172 x 122.如果不希望出现这种情况,请调用{ {1}}方法代替forceSize方法可以实现这一目标。

免责声明:我维护了Thumbnailator库。