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。是的,帕维尔·霍拉尔,你说得对。如何使用与原始文件第一个参数文件相同的质量设置进行保存?请浏览以下链接: