-1
私は画像が表示され、最大の高さは375、最大の幅は775のフィールドを持っています。アスペクト比を維持しながら最大のサイズを得るために、これらの値の1つにできるだけ近い値にします私が思いついたのは実際にはうまくいくようですが、私が考えていないよりよい方法があると思います。アスペクト比を維持しながら画像を縮小する最も効率的な方法は?
InputStream in = new ByteArrayInputStream(fileData);
BufferedImage buf = ImageIO.read(in);
int maxWidth = 775;
int maxHeight = 375;
int newWidth;
int newHeight;
float height = buf.getHeight();
float width = buf.getWidth();
float ratio = (float) 0.0;
if(height > maxHeight || width > maxWidth)
{
if (height > width)
{
ratio = (height/width);
}
else if(width > height)
ratio = (width/height);
while(height > maxHeight || width > maxWidth)
{
if (height > width)
{
height -= ratio;
width -= 1;
}
else if(width > height)
{
width -= ratio;
height -= 1;
}
}
}
newWidth = (int) width;
newHeight = (int) height;
// Call method to scale image to appropriate size
byte[] newByte = scale(fileData, newWidth, newHeight);
が重複する可能性のようになります。http://stackoverflow.com/questions/273946/how-do-i-アスペクト比を使用してイメージを使用してサイズ変更しますか?rq = 1 –