I am creating a very simple chart using awt.Graphics2D:
    int width = countRange, height = 200;
    BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
    Graphics2D ig2 = bi.createGraphics();
    //drawing some stuff
Now i want to scale in width if width exceeds maximum (i need to scale after drawing, and the drawing relies on full width=countRange):
    if (countRange > MAX_IMAGE_WIDTH) {
        float yScale = (float) MAX_IMAGE_WIDTH / countRange;
        ig2.scale(1,yScale);
    }
Image is put out as byte[]:
    ByteArrayOutputStream os = new ByteArrayOutputStream();
    try {
        ImageIO.write(bi, "PNG", os);
    } catch (IOException e) {
        throw new IllegalStateException("Problem");
    }
    return os.toByteArray();
The problem is: the output is not scaled. It returns the image in original size. So how to scale the image after drawing and put it out?
 
    