当java程序添加文本时,图像大小增加

当java程序添加文本时,图像大小增加,java,image-processing,graphics,Java,Image Processing,Graphics,我正在创建带有标题的图像,但在对图像应用文本标题之前,图像的大小是1MB,但在这之后它增加了大约4-5MB File f = new File("E:/picTest/08062016_110130_0.jpg"); final BufferedImage image = ImageIO.read(f); String s ="hello"; Graphics g = image.getGraphics(); g.setFont(g.getFont().deriveFont(30f)); g

我正在创建带有标题的图像,但在对图像应用文本标题之前,图像的大小是1MB,但在这之后它增加了大约4-5MB

File f = new File("E:/picTest/08062016_110130_0.jpg");

final BufferedImage image = ImageIO.read(f);

String s ="hello";
Graphics g = image.getGraphics();
g.setFont(g.getFont().deriveFont(30f));
g.setColor(Color.black);
g.drawString(s, 100, 100);
g.dispose();

ImageIO.write(image, "png", new File("E:/picTest/test2.jpg"));

所以,我希望我的图像大小不要增加,如果它增加,图像的最小大小就会增加。

我找不到一个像样的接近复制品,所以我将把这个作为一个答案发布。你的问题不仅仅是因为你写了一个新的图像,而且当你写新文件的时候,你也在把文件格式从一个有损格式jpg转换成一个无损格式png,因此你的文件要大得多,因为png文件几乎总是比它们的jpg等效文件大。如果您最关心的是图像质量而不是文件大小,那么继续您正在做的事情,尽管您应该将要写入的文件的扩展名更改为png。否则,如果文件大小非常重要,则通过更改

ImageIO.write(image, "png", new File("E:/picTest/test2.jpg"));
致:


关于这两种文件格式之间的差异以及其他格式的更多信息,请查看

您似乎正在将图像格式从jpg更改为png,尽管令人困惑的是,您正在写入的文件仍然具有jpg扩展名。如果您更改格式,尤其是从有损文件格式更改为无损类型,我预计文件大小可能会发生重大变化。有关格式之间差异的更多信息,请参阅此问题和答案:。
ImageIO.write(image, "jpg", new File("E:/picTest/test2.jpg"));