我正在创建带有标题的图像,但在对图像应用文本标题之前,图像的大小为 1 MB,但之后它增加了大约 4-5 MB。
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。否则,如果文件大小至关重要,则通过更改将输出文件写入jpg
ImageIO.write(image, "png", new File("E:/picTest/test2.jpg"));
自:
ImageIO.write(image, "jpg", new File("E:/picTest/test2.jpg"));
再次有关这两种文件格式以及其他格式之间区别的更多信息,请查看PNG vs.GIF vs.JPEG vs.SVG - 什么时候最好使用?