2016-06-08 41 views
-1

我正在创建具有标题的图像,但在图像上应用文本标题之前,图像的大小为1 mb,但在此之后它增加了大约4-5 mb。当java程序添加文本时图像大小增加

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")); 

所以,我想我的图像大小不增加,如果它增加,图像的最小尺寸增加。

+2

您似乎将图像格式从jpg更改为png,但您写入的文件仍有jpg扩展名。如果您更改格式,我会希望文件大小发生重大变化,特别是从有损文件格式转换为无损文件格式时。 –

+0

看到这个问题和答案:[PNG与GIF对比JPEG与SVG - 何时最好使用?](http://stackoverflow.com/questions/2336522/png-vs-gif-vs-jpeg-vs- svg-when-best-to-use),更多关于格式之间的差异。 –

回答

0

我无法找到一个体面的重复,所以我会张贴这个答案。你的问题是由于你不仅仅是在写一个新的图像,而且你还在将文件格式从无损格式JPG转换为无损格式PNG,当你编写新文件时,由于这个原因你的文件很多更大,因为PNG文件几乎总是比他们的JPG相当。如果你最关心的是图像质量超过文件大小,那么继续你在做什么,尽管你应该改变你写的文件的扩展名到PNG。否则,如果文件大小是最重要的,然后通过改变

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

写你的输出文件为JPG:

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

再次以获得更多关于这两种文件格式之间的差异,以及其他格式以及请看PNG vs. GIF vs. JPEG vs. SVG - When best to use?