java如何改变图片
修改图片大小
使用 BufferedImage 和 Graphics2D 调整图片尺寸:
BufferedImage originalImage = ImageIO.read(new File("input.jpg"));
BufferedImage resizedImage = new BufferedImage(newWidth, newHeight, originalImage.getType());
Graphics2D g = resizedImage.createGraphics();
g.drawImage(originalImage, 0, 0, newWidth, newHeight, null);
g.dispose();
ImageIO.write(resizedImage, "jpg", new File("output.jpg"));
图片旋转
通过仿射变换实现旋转(以90度为例):
AffineTransform transform = new AffineTransform();
transform.translate((double) image.getHeight() / 2, (double) image.getWidth() / 2);
transform.rotate(Math.PI / 2);
transform.translate((double) -image.getWidth() / 2, (double) -image.getHeight() / 2);
AffineTransformOp op = new AffineTransformOp(transform, AffineTransformOp.TYPE_BILINEAR);
BufferedImage rotatedImage = op.filter(image, null);
图片格式转换
将PNG转换为JPG(注意JPG不支持透明度):

BufferedImage pngImage = ImageIO.read(new File("input.png"));
BufferedImage jpgImage = new BufferedImage(pngImage.getWidth(), pngImage.getHeight(), BufferedImage.TYPE_INT_RGB);
jpgImage.createGraphics().drawImage(pngImage, 0, 0, Color.WHITE, null);
ImageIO.write(jpgImage, "jpg", new File("output.jpg"));
图片裁剪
指定矩形区域裁剪:
Rectangle cropArea = new Rectangle(x, y, width, height);
BufferedImage croppedImage = originalImage.getSubimage(cropArea.x, cropArea.y, cropArea.width, cropArea.height);
添加水印
叠加文字或图片水印:

Graphics2D g = image.createGraphics();
g.setFont(new Font("Arial", Font.BOLD, 30));
g.setColor(Color.RED);
g.drawString("Watermark", x, y); // 文字水印
g.drawImage(watermarkImage, x, y, null); // 图片水印
g.dispose();
调整亮度和对比度
使用 RescaleOp 修改像素值范围:
float scaleFactor = 1.2f; // 亮度系数
float offset = 15f; // 对比度偏移
RescaleOp op = new RescaleOp(scaleFactor, offset, null);
BufferedImage adjustedImage = op.filter(originalImage, null);
图片滤镜效果
实现灰度化:
ColorConvertOp op = new ColorConvertOp(ColorSpace.getInstance(ColorSpace.CS_GRAY), null);
BufferedImage grayImage = op.filter(originalImage, null);
注意事项
- 操作后需调用
dispose()释放Graphics2D资源。 - 处理透明背景时,JPG格式会丢失透明度,建议使用PNG。
- 高性能处理大量图片时,可考虑使用
ImageIO的缓存机制或第三方库(如Thumbnailator)。






