图片缩略 补白边 java实现
时间: 2023-08-31 17:11:22 浏览: 153
实现图片缩略和补白边可以使用Java的Graphics2D类来完成。具体步骤如下:
1. 读取原始图片,获取其宽度和高度。
2. 计算缩略后的图片宽度和高度,可以使用等比例缩放的方式计算,也可以直接指定缩略后的宽度和高度。
3. 创建一个新的BufferedImage对象,设置它的宽度和高度为缩略后的宽度和高度。
4. 获取Graphics2D对象,将原始图片绘制到新的BufferedImage对象中,并缩放到指定的宽度和高度。
5. 如果原始图片的宽度或高度小于缩略后的宽度或高度,则需要对新的BufferedImage对象进行补白操作。
6. 将新的BufferedImage对象保存到文件中。
下面是Java代码实现:
```
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
public class ImageUtil {
public static void resizeAndFill(File srcFile, File destFile, int width, int height) throws Exception {
BufferedImage srcImage = ImageIO.read(srcFile);
int srcWidth = srcImage.getWidth();
int srcHeight = srcImage.getHeight();
double scale = Math.max((double) width / srcWidth, (double) height / srcHeight);
int destWidth = (int) (srcWidth * scale);
int destHeight = (int) (srcHeight * scale);
BufferedImage destImage = new BufferedImage(destWidth, destHeight, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = destImage.createGraphics();
g2d.drawImage(srcImage, 0, 0, destWidth, destHeight, null);
if (destWidth > width) {
int left = (destWidth - width) / 2;
g2d.setColor(Color.WHITE);
g2d.fillRect(0, 0, left, destHeight);
g2d.fillRect(destWidth - left, 0, left, destHeight);
}
if (destHeight > height) {
int top = (destHeight - height) / 2;
g2d.setColor(Color.WHITE);
g2d.fillRect(0, 0, destWidth, top);
g2d.fillRect(0, destHeight - top, destWidth, top);
}
g2d.dispose();
ImageIO.write(destImage, "JPEG", destFile);
}
}
```
上面的代码中,resizeAndFill方法接收原始图片文件、目标文件、目标宽度和高度四个参数。它首先读取原始图片,然后计算缩略后的宽度和高度,创建一个新的BufferedImage对象,并将原始图片绘制到新的BufferedImage对象中,并缩放到指定的宽度和高度。如果原始图片的宽度或高度小于缩略后的宽度或高度,则需要对新的BufferedImage对象进行补白操作。最后将新的BufferedImage对象保存到目标文件中。
可以在自己的项目中调用这个方法实现图片缩略和补白边。
阅读全文