原因:jpg和jpeg格式的图片需要重画
解决方法:
/** * 保存图片 * * @param image 图片 * @param formatName 格式名称 * @param outFile 输入文件 * @throws IOException */ public static void saveAs(BufferedImage image, String formatName, File outFile) throws IOException { if (formatName.equalsIgnoreCase("jpg") || formatName.equalsIgnoreCase("jpeg")) { //重画一下,要么会变色 BufferedImage tag; tag = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_BGR); Graphics g = tag.getGraphics(); g.drawImage(image, 0, 0, null); // 绘制缩小后的图 g.dispose(); image = tag; } ImageIO.write(image, formatName, outFile); }