This question already has answers here:
Java: maintaining aspect ratio of JPanel background image

(4个答案)


5年前关闭。




我有一个程序将图像从前端(angularjs)发送到Java控制器。在控制器中,我得到一个字节数组。我可以保存该图像,但是我想在保存之前调整此图像的大小。问题是我要设置图片的固定高度,并且宽度的变化应与高度成比例地进行。此过程应通用,以适用于不同的照片。

下面是我的代码:

@RequestMapping(value = "/rest/bookImage", method = RequestMethod.POST)
    public @ResponseBody MessageDTO UploadFile(
            MultipartHttpServletRequest request, HttpServletResponse response) {

        Iterator<String> itr = request.getFileNames();
        MultipartFile file = request.getFile(itr.next());
        FileOutputStream fos;
        fos = new FileOutputStream(urlImage);
        fos.write(file.getBytes());
            fos.close();
}

最佳答案

由于已经有了图像,因此可以使用getScaledInstance函数:

yourImage.getScaledInstance(newWidth, newHeight, Image.SCALE_DEFAULT);


您说要通过选择是否将其设置为两倍或任意值来使宽度与高度成比例(分别设置适当的高度和宽度!)

在此处查看更多信息:http://docs.oracle.com/javase/7/docs/api/java/awt/Image.html

public Image getScaledInstance(int width,
                      int height,
                      int hints)


创建此图像的缩放版本。返回一个新的Image对象,它将默认以指定的宽度和高度渲染图像。
如果width或height为负数,则将替换一个值以保持原始图像尺寸的纵横比。如果宽度和高度均为负数,则使用原始图像尺寸。

参数:
width-缩放图像的宽度。
height-缩放图像的高度。
提示-指示用于图像重采样的算法类型的标志。
返回:图像的缩放版本。

10-08 03:12
查看更多