2012-02-18 3 views
0

Я сохранил некоторые изображения в базе данных, а для их получения я хочу изменить его размер до 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); 
       } 
      } 

ответ

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

Предполагая, что данные в столбце image представляет собой формат изображения, что Java-изображение ввода/вывода может читать (например, JPEG и PNG), то Thumbnailator библиотека должна иметь возможность для достижения этой цели.

Код, который будет извлекать данные изображения из 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 х 122, и, наконец, выход т он как миниатюра JPEG в указанный файл.

По умолчанию Thumbnailator сохранит пропорции исходного изображения при изменении размера изображений (чтобы изображение исказилось от искажения), поэтому размер изображения не обязательно будет 172 x 122. Если это поведение нежелательно, вызов forceSize метод, а не size способ может это достичь.

Отказ от ответственности: Я поддерживаю библиотеку Thumbnailator.

Смежные вопросы