在数字化时代,图片处理是一项基本技能。Java作为一种强大的编程语言,在图片处理方面有着广泛的应用。今天,就让我来为大家揭秘如何使用Java批量加水印并缩小图片尺寸的秘诀。
一、Java图片处理基础
在Java中,处理图片通常需要使用第三方库,如Apache Commons IO、ImageIO等。这里,我们将使用Java的ImageIO类来加载、处理和保存图片。
1.1 加载图片
首先,我们需要加载图片。以下是一个简单的示例代码:
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class ImageProcessor {
public static BufferedImage loadImage(String path) throws IOException {
return ImageIO.read(new File(path));
}
}
1.2 保存图片
处理完图片后,我们需要将其保存到文件系统中。以下是一个保存图片的示例代码:
public static void saveImage(BufferedImage image, String path, String formatName) throws IOException {
ImageIO.write(image, formatName, new File(path));
}
二、批量加水印
在图片上添加水印是图片处理中的一个常见需求。以下是一个简单的示例,演示如何在图片上添加文字水印:
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class WatermarkProcessor {
public static BufferedImage addTextWatermark(BufferedImage image, String text, Color color, int x, int y) {
Graphics2D g2d = image.createGraphics();
AlphaComposite alphaChannel = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.3f);
g2d.setComposite(alphaChannel);
g2d.setColor(color);
g2d.setFont(new Font("Arial", Font.BOLD, 64));
FontMetrics fontMetrics = g2d.getFontMetrics();
Rectangle2D rect = fontMetrics.getStringBounds(text, g2d);
int centerX = (image.getWidth() - (int) rect.getWidth()) / 2;
int centerY = image.getHeight() / 2;
g2d.drawString(text, centerX, centerY);
g2d.dispose();
return image;
}
}
三、缩小图片尺寸
在Java中,我们可以使用ImageScaleOp类来缩小图片尺寸。以下是一个示例代码:
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class ResizeProcessor {
public static BufferedImage resizeImage(BufferedImage image, int targetWidth, int targetHeight) {
BufferedImage resizedImage = new BufferedImage(targetWidth, targetHeight, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = resizedImage.createGraphics();
g2d.drawImage(image, 0, 0, targetWidth, targetHeight, null);
g2d.dispose();
return resizedImage;
}
}
四、批量加水印并缩小图片尺寸
现在,我们已经掌握了Java图片处理的基础知识,接下来,我们可以将这些知识结合起来,实现批量加水印并缩小图片尺寸的功能。
public class Main {
public static void main(String[] args) {
String inputPath = "input";
String outputPath = "output";
File inputDir = new File(inputPath);
File[] files = inputDir.listFiles();
for (File file : files) {
try {
BufferedImage image = ImageProcessor.loadImage(file.getPath());
BufferedImage watermarkImage = WatermarkProcessor.addTextWatermark(image, "Watermark", Color.BLUE, 50, 50);
BufferedImage resizedImage = ResizeProcessor.resizeImage(watermarkImage, 800, 600);
String outputFileName = outputPath + File.separator + file.getName();
ImageProcessor.saveImage(resizedImage, outputFileName, "jpg");
System.out.println("Processed: " + outputFileName);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
通过以上代码,我们可以实现批量加水印并缩小图片尺寸的功能。当然,这只是Java图片处理的一个简单示例,实际应用中,你可能需要根据具体需求进行调整和优化。
