我正在使用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(宽度、高度、提示)