Java 使用ImageIO.write绘制缓冲区图像导致图像大小调整

Java 使用ImageIO.write绘制缓冲区图像导致图像大小调整,java,javax.imageio,Java,Javax.imageio,我有以下代码: public void draw(File image, int number, File destination) { BufferedImage img = null; try { img = ImageIO.read(image); //create graphic object Graphics2D graphicImg = img.createGraphics(); //select

我有以下代码:

public void draw(File image, int number, File destination) {

    BufferedImage img = null;

    try {
        img = ImageIO.read(image);
        //create graphic object
        Graphics2D graphicImg = img.createGraphics();

        //select the font
        Font font = new Font("TimesRoman", Font.BOLD, 96);
        graphicImg.setFont(font);

        //draw the text
        graphicImg.drawString(String.valueOf(number), 100, 100);

        //save on disk
        ImageIO.write(img, "jpg", destination);     

    } catch (Exception e) {
        System.out.println("Error while trying to write on image!");
    }
}
我传递一个文件,它将是一个图像作为第一个参数,一个int和一个表示文件目标的文件

该方法应在此文件上绘制一个数字

问题是新图像的图像大小将低于原始图像。例如,如果我给出一个3Mb的图像作为第一个参数,那么保存的图像大约有1.5Mb。为什么大小如此不同,我如何修复它


谢谢

原始图像的格式是什么?您所说的是更改以字节为单位的实际大小,而不是按尺寸宽度/高度调整大小。正确吗?根据创建的图像设置对图像重新采样。我认为JPG image writer的默认质量设置是75。。。这是相当低的。您可能需要检查源图像的质量。也许有人会为此提供代码:.1337:通常是jpg。是的,帕维尔·霍拉尔,你说得对。如何使用与原始文件第一个参数文件相同的质量设置进行保存?请浏览以下链接: