1

簡単なスケーリングを行うことは知っていますが、画像を最大300 * 100ピクセルにスケーリングするにはどうすればよいですか?AffineTransform APIクラスを検索しましたが、このためのメソッドが見つかりませんでした。

事前にt​​hx

4

2 に答える 2

1

ターゲットの幅/高さに対する画像の幅/高さに基づいて、変換の係数を計算します。

コードを書いて、問題が発生した場合は、具体的な質問をしてください。

于 2011-03-31T17:40:06.427 に答える
1

高さを300ピクセル、幅を100ピクセルにするスケールを計算して、スケール係数に「戻す」必要があると思います。

何かのようなもの

double xScale = 100/image.getWidth();
double yScale = 300/image.getHeight();

AffineTransform transform = new AffineTransform();
transform.setToScale( xScale, yScale );
//paint code goes here

ただし、これでは均一にスケーリングされません。これを行うには、xとyに同じスケールを使用する必要があります。したがって、画像が画面/ディスプレイ/ページに収まるようにしようとしている場合は、最も広い寸法の縮尺を使用します。したがって、上記の例を使用するには...

double xScale = 100/image.getWidth();
double yScale = 300/image.getHeight();
double theScale = xScale > yScale ? xScale : yScale;

AffineTransform transform = new AffineTransform();
transform.setToScale( theScale , theScale );
//paint code goes here

これは単なる提案ですが、お役に立てば幸いです。

于 2011-03-31T18:06:17.363 に答える