2013-05-14 146 views
1

我使用以下代碼調整圖像大小,但問題在於它們不保留原始高寬比,有沒有什麼方法可以調整圖像的大小而不影響圖像的寬高比比。在不影響寬高比的情況下調整圖像大小

BufferedImage img1 = new BufferedImage(800, 600, 
        BufferedImage.TYPE_INT_RGB); 
      img1.createGraphics() 
        .drawImage(
          ImageIO.read(
            new File("/home/rvkydmpo/webapps/ROOT/images/profilePicture/" 
              + fileName)).getScaledInstance(800, 
            600, Image.SCALE_SMOOTH), 0, 0, null); 
      ImageIO.write(img1, "jpg", new File("/home/rvkydmpo/webapps/ROOT/images/profilePicture/" +fileName)); 
+0

的[調整圖像大小,同時保持在Java中的縱橫比(http://stackoverflow.com/questions/991349/resize-image-while可能重複一個Java庫-format-aspect-in-java) – wchargin 2013-05-14 15:13:58

回答

2

您可能需要閱讀the docs of getScaledInstance()

Image java.awt.Image.getScaledInstance(int width, int height, int hints) 

創建此圖像的縮放版本。返回一個新的圖像對象 ,它將使圖像在指定的寬度和高度下默認顯示 。即使 原始源圖像已完全加載,也可以異步加載新的Image對象。

如果寬度或高度都是負數,則將值替換爲 以保持原始圖像的縱橫比 尺寸。如果寬度和高度都是負值,則使用原始的圖像尺寸 。

(重點煤礦)

+0

如何在'getScaledInstance'函數中計算高度和寬度,以保持原始高寬比。 – 2013-05-14 15:14:11

0

我不知道什麼服務器正在運行你的代碼,但如果你是基於linux系統上運行它,你可以使用ImageMagick的轉換命令。

還有可供調用imagemaick叫JMagick

+0

這與服務器沒有任何關係。沒有必要使用'imagemagick'。 Java具有他需要內置的功能。 – wchargin 2013-05-14 15:10:55

相關問題