图片缩略 补白边 java实现
时间: 2023-08-31 07:11:23 浏览: 176
要实现图片缩略并补白边,可以使用Java的Java 2D API。下面是一个简单的实现代码,其中包括了图片缩略和补白边的功能。
```java
import java.awt.*;
import java.awt.image.BufferedImage;
public class ImageUtils {
public static BufferedImage resizeAndPad(BufferedImage image, int newWidth, int newHeight) {
// 计算宽高比例
double widthRatio = (double) newWidth / image.getWidth();
double heightRatio = (double) newHeight / image.getHeight();
double ratio = Math.min(widthRatio, heightRatio);
// 计算缩略图大小
int width = (int) (image.getWidth() * ratio);
int height = (int) (image.getHeight() * ratio);
// 创建缩略图
BufferedImage resizedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = resizedImage.createGraphics();
g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2d.drawImage(image, 0, 0, width, height, null);
g2d.dispose();
// 创建带有白色边框的图片
BufferedImage paddedImage = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_RGB);
g2d = paddedImage.createGraphics();
g2d.setColor(Color.WHITE);
g2d.fillRect(0, 0, newWidth, newHeight);
g2d.drawImage(resizedImage, (newWidth - width) / 2, (newHeight - height) / 2, null);
g2d.dispose();
return paddedImage;
}
}
```
使用方法:
```java
BufferedImage image = ImageIO.read(new File("image.jpg"));
BufferedImage thumbnail = ImageUtils.resizeAndPad(image, 200, 200);
ImageIO.write(thumbnail, "jpg", new File("thumbnail.jpg"));
```
这里的 `resizeAndPad` 方法接受一个 `BufferedImage` 对象和两个整数参数,表示缩略图的宽度和高度。该方法会计算缩略图的大小,并创建带有白色边框的缩略图。最终返回带有白色边框的缩略图 `BufferedImage` 对象。
阅读全文