newBing帮我写的图片处理代码
这边仅仅作为记录 还没去实现 等我实践再删了这篇重新写一篇随笔吧
当然可以。下面是两个简单的工具类,分别用于压缩图片和添加水印。
ImageCompressor类提供了一个compress方法,用于压缩JPEG图片的质量:
import javax.imageio.ImageIO;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;
import javax.imageio.stream.FileImageOutputStream;
import javax.imageio.stream.ImageOutputStream;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class ImageCompressor {
/**
* 压缩JPEG图片的质量
*
* @param imageFile 原始图片文件
* @param compressedImageFile 压缩后的图片文件
* @param quality 压缩质量(0.0 ~ 1.0)
* @throws IOException
*/
public static void compress(File imageFile, File compressedImageFile, float quality) throws IOException {
// 读取原始图片
BufferedImage image = ImageIO.read(imageFile);
// 设置压缩质量
ImageWriter writer = ImageIO.getImageWritersByFormatName("jpg").next();
ImageWriteParam param = writer.getDefaultWriteParam();
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
param.setCompressionQuality(quality);
// 将压缩后的图片写入文件
try (ImageOutputStream output = new FileImageOutputStream(compressedImageFile)) {
writer.setOutput(output);
IIOImage iioImage = new IIOImage(image, null, null);
writer.write(null, iioImage, param);
}
writer.dispose();
}
}
Watermarker类提供了一个addWatermark方法,用于在图片上添加文本或图像水印:
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class Watermarker {
/**
* 在图片上添加文本水印
*
* @param imageFile 原始图片文件
* @param watermarkedImageFile 添加水印后的图片文件
* @param text 水印文本
* @param font 水印字体
* @param color 水印颜色
* @param x 水印x坐标
* @param y 水印y坐标
* @throws IOException
*/
public static void addWatermark(File imageFile, File watermarkedImageFile, String text, Font font, Color color, int x, int y) throws IOException {
// 读取原始图片
BufferedImage image = ImageIO.read(imageFile);
// 获取图形上下文
Graphics2D g = image.createGraphics();
// 设置水印字体和颜色
g.setFont(font);
g.setColor(color);
// 绘制水印
g.drawString(text, x, y);
g.dispose();
// 将添加了水印的图片写入文件
ImageIO.write(image, "jpg", watermarkedImageFile);
}
/**
* 在图片上添加图像水印
*
* @param imageFile 原始图片文件
* @param watermarkedImageFile 添加水印后的图片文件
* @param watermarkFile 水印图片文件
* @param x 水印x坐标
* @param y 水印y坐标
* @throws IOException
*/
public static void addWatermark(File imageFile, File watermarkedImageFile, File watermarkFile, int x, int y) throws IOException {
// 读取原始图片和水印图片
BufferedImage image = ImageIO.read(imageFile);
BufferedImage watermark = ImageIO.read(watermarkFile);
// 获取图形上下文
Graphics2D g = image.createGraphics();
// 绘制水印
g.drawImage(watermark, x, y, null);
g.dispose();
// 将添加了水印的图片写入文件
ImageIO.write(image, "jpg", watermarkedImageFile);
}
}
您可以根据需要使用这些工具类来压缩图片和添加水印。例如,下面是一个简单的示例,演示如何使用这些工具类来压缩图片并添加文本水印:
File imageFile = new File("image.jpg");
File compressedImageFile = new File("compressedImage.jpg");
File watermarkedImageFile = new File("watermarkedImage.jpg");
// 压缩图片
ImageCompressor.compress(imageFile, compressedImageFile, 0.5f);
// 添加文本水印
Font font = new Font("宋体", Font.BOLD, 30);
Color color = Color.RED;
int x = 10;
int y = 50;
Watermarker.addWatermark(compressedImageFile, watermarkedImageFile, "水印文字", font, color, x, y);
希望这对您有所帮助。如果您还有其他问题,请随时告诉我。

浙公网安备 33010602011771号