2012-04-01 16 views
3

画像のサイズを変更して縦横比を維持する方法を教えてください。画像のサイズ変更 - 縦横比を維持する

この私が使用する方法である:

private static BufferedImage resizeImage(BufferedImage originalImage, 
      int type) { 
     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(); 

     return resizedImage; 
    } 

type変数:

BufferedImage original = ImageIO.read(new File(imagePath)); 
int type = original.getType() == 0 ? BufferedImage.TYPE_INT_ARGB 
        : original.getType(); 

問題は、一部の画像が正しくリサイズされていることであるが、他の人がいるためIMG_WIDTHの彼らのアスペクト比を失い、 IMG_HEIGHT。

元の画像のサイズを取得し、サイズ変更された画像の縦横比を維持するためにある種の比率のサイズ変更を適用する方法はありますか?

答えて

7

なぜoriginalImage.getWidth()originalImage.getHeight()を使用しないのですか?次に、アスペクト比を簡単に計算できます。あなたは追加の数学について

double ratio = 1.0 * originalImage.getWidth()/originalImage.getHeight(); 

or 

double ratio = (double) originalImage.getWidth()/originalImage.getHeight(); 

を行う必要があるので、あなたがより良いあなたのニーズに合った1を参照して(IMG_WIDTH, height)にサイズを変更すると

int height = (int) IMG_WIDTH/ratio; 

int width = (int) IMG_HEIGHT*ratio; 

を計算することができ、INT/INT = INTことを忘れてはいけませんまたは(width, IMG_HEIGHT)

1

画像サイズを取得するには、getWidth()/getHeight()を参照してください。残りは、比較的単純な数学にすぎません。最初の限界を打つために起こっている

  • 検索:IMG_WIDTH & IMG_HEIGHTを推定

    は、望ましい最大の大きさを表します。

  • 自然のサイズとその最大サイズの比率を計算します。
  • 他の画像のサイズにも同じ比率を掛けます。
+0

私の質問には何か問題がありますImage#getScaledInstance – mKorbel

+0

@mKorbelまだ適用されていますが、[The Perils of Image.getScaledInstance()](http://today.java.net/pub/)を参照してください。 a/today/2007/04/03/perils-of-image-getscaledinstance.html)。 –

+0

ありがとうございました – mKorbel

関連する問題