请使用jsp技术为指定的图片生成缩略图,需要的比例和尺寸如下: 1、生成原图片大小50%的缩略图 2、生成原照片大小10%的缩略图 3、生成宽度为100像素的缩略图
时间: 2024-09-28 18:04:33 浏览: 28
在JSP中,我们可以利用Java的ImageIO和BufferedImage类来处理图片并生成缩略图。以下是一个简单的示例说明如何实现这三个需求:
1. 生成原图片大小50%的缩略图:
```java
<%@ page import="java.awt.image.BufferedImage" %>
<%@ page import="java.io.File" %>
<%@ page import="javax.imageio.ImageIO" %>
public void generateThumbnail(String srcPath, String dstPath) {
try {
File original = new File(srcPath);
BufferedImage image = ImageIO.read(original);
int thumbnailWidth = (int)(image.getWidth() * 0.5);
int thumbnailHeight = (int)(image.getHeight() * 0.5);
BufferedImage thumbnail = new BufferedImage(thumbnailWidth, thumbnailHeight, image.getType());
Graphics2D g2d = thumbnail.createGraphics();
g2d.drawImage(image, 0, 0, thumbnailWidth, thumbnailHeight, null);
g2d.dispose();
ImageIO.write(thumbnail, "jpg", new File(dstPath));
} catch (IOException e) {
e.printStackTrace();
}
}
// 在JSP中调用这个函数
<%@ page import="your.package.name.GenerateThumbnails" %>
GenerateThumbnails.generateThumbnail("path/to/original/image.jpg", "path/to/thumbnail1.jpg");
```
2. 生成原照片大小10%的缩略图:
```java
int thumbnailWidth = (int)(image.getWidth() * 0.1);
int thumbnailHeight = (int)(image.getHeight() * 0.1);
```
将上述代码中50%的比例改为10%,即可得到原图片大小10%的缩略图。
3. 生成宽度为100像素的缩略图:
```java
int thumbnailWidth = 100;
int thumbnailHeight = (int)Math.min((float)thumbnailWidth / (float)image.getWidth() * image.getHeight(), image.getHeight());
```
这里直接设定宽度为100像素,并计算出相应的高度,保证比例不变。
阅读全文