如何在必要时绘制后缩放图像/图形2d



我正在使用awt创建一个非常简单的图表。图形2D:

    int width = countRange, height = 200;
    BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
    Graphics2D ig2 = bi.createGraphics();
    //drawing some stuff

现在,如果宽度超过最大值,我想缩放宽度(我需要在绘图后缩放,绘图依赖于全宽度=countRange):

    if (countRange > MAX_IMAGE_WIDTH) {
        float yScale = (float) MAX_IMAGE_WIDTH / countRange;
        ig2.scale(1,yScale);
    }

图像显示为字节[]:

    ByteArrayOutputStream os = new ByteArrayOutputStream();
    try {
        ImageIO.write(bi, "PNG", os);
    } catch (IOException e) {
        throw new IllegalStateException("Problem");
    }
    return os.toByteArray();

问题是:输出没有按比例缩放。它返回原始大小的图像。那么,如何在绘制后缩放图像并将其输出呢?

Graphics2D.scale(double,double)仅为以下绘图操作设置缩放比例。

您需要BufferedImage.getScaledInstance(宽度、高度、提示)

最新更新