使用Java函数实现图像处理(如缩放、旋转、剪裁等)
发布时间:2023-10-27 14:42:14
在Java中实现图像处理可以使用Java的图像处理库javax.imageio和java.awt.image。以下是一个使用Java实现缩放、旋转和剪裁图像的示例代码:
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class ImageProcessing {
public static void main(String[] args) {
String inputImagePath = "input.jpg";
String outputImagePath = "output.jpg";
try {
// 读取输入图像
BufferedImage inputImage = ImageIO.read(new File(inputImagePath));
// 缩放图像
BufferedImage scaledImage = scaleImage(inputImage, 0.5);
// 旋转图像
BufferedImage rotatedImage = rotateImage(scaledImage, 45);
// 剪裁图像
BufferedImage croppedImage = cropImage(rotatedImage, 100, 100, 200, 200);
// 写入输出图像
ImageIO.write(croppedImage, "jpg", new File(outputImagePath));
System.out.println("图像处理完成。");
} catch (IOException e) {
System.out.println("图像处理错误:" + e.getMessage());
}
}
// 缩放图像
private static BufferedImage scaleImage(BufferedImage inputImage, double scaleFactor) {
int scaledWidth = (int) (inputImage.getWidth() * scaleFactor);
int scaledHeight = (int) (inputImage.getHeight() * scaleFactor);
BufferedImage outputImage = new BufferedImage(scaledWidth, scaledHeight, inputImage.getType());
Graphics2D graphics2D = outputImage.createGraphics();
graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
graphics2D.drawImage(inputImage, 0, 0, scaledWidth, scaledHeight, null);
graphics2D.dispose();
return outputImage;
}
// 旋转图像
private static BufferedImage rotateImage(BufferedImage inputImage, double degrees) {
BufferedImage outputImage = new BufferedImage(inputImage.getWidth(), inputImage.getHeight(), inputImage.getType());
Graphics2D graphics2D = outputImage.createGraphics();
graphics2D.rotate(Math.toRadians(degrees), inputImage.getWidth() / 2, inputImage.getHeight() / 2);
graphics2D.drawImage(inputImage, 0, 0, null);
graphics2D.dispose();
return outputImage;
}
// 剪裁图像
private static BufferedImage cropImage(BufferedImage inputImage, int x, int y, int width, int height) {
return inputImage.getSubimage(x, y, width, height);
}
}
以上代码中,示例默认将输入图像缩放为原尺寸的50%,旋转45度,并剪裁出中心200x200的区域作为输出图像。你可以根据自己的需求调整参数来实现不同的图像处理操作。
