あなたの例では、すでにあなたが探しているアルゴリズムを使い切っています。 あなたが与えた例を使用します。
Original Target
200 x 100 -> 30 x 10
1. You take the bigger value of the target dimensions (in our case 30)
2. Check if its smaller than the corresponding original width or height
2.1 If its smaller define this as the new width (So 30 is the new width)
2.2 If its not smaller check the other part
3. Now we have to calculate the height which is simply the (30/200)*100
So as result you get like you wrote: 30 x 15
希望は、これはあなたがのBufferedImageを使用し、単にそのような正しいスケール値を持つ新しいBufferedImageを作成することができ符号化部では
:)明らかになりました。
BufferedImage before = getBufferedImage(encoded);
int w = before.getWidth();
int h = before.getHeight();
BufferedImage after = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
AffineTransform at = new AffineTransform();
at.scale(2.0, 2.0); // <-- Here you should use the calculated scale factors
AffineTransformOp scaleOp =
new AffineTransformOp(at, AffineTransformOp.TYPE_BILINEAR);
after = scaleOp.filter(before, after);
ありがとうございました:)しかし、私が必要とするのは、幅と高さの両方が目標のカウンタ部分と常に一致するか、それよりも大きくなるということです。フィットは正確に一致する場合にのみ受け入れられ、そうでない場合はより大きくなるはずです。それが大きくなると、私はより大きいが、アスペクト比を維持する最小のものを見つける必要がありました。 –
あなたは歓迎ですが、あなたが期待していたものであれば「回答として受け入れる」ことができます。 – darma
私はenterをクリックして投稿したので、私のコメントを変更しました。場合によっては次元の1つがターゲットを下回る可能性があるため、ソリューションは部分的に完全です。 –