使用Java生成缩略图
更新:2023-09-29 01:25 Java生成缩略图主要可通过Java自身提供的ImageIO类完成。本文将先阐述如何读取和写入图片,然后讨论如何利用Graphics2D类进行图片缩放以转换原始图片为缩略图。
一、使用ImageIO读写图片
ImageIO是Java壁纸图形图像IO类,它为独立的输入、生成和读取/写入插件提供了可插拔功能。
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
public class ImageDemo {
public static void main(String[] args) throws Exception {
File input = new File("orig.jpg");
BufferedImage image = ImageIO.read(input);
File output = new File("copy.jpg");
ImageIO.write(image, "jpg", output);
}
}
在上述代码中,我们首先创建了一个File对象来表示图片源路径,然后通过ImageIO类的静态方法read读取了图片内容,得到一个BufferedImage对象。之后我们又创建了另一个File对象,表示输出的图片路径,最后通过ImageIO的write方法将原图写入到新路径中。
二、使用Graphics2D进行图片缩放
Graphics2D类继承自Graphics类,提供更多用于渲染2D几何形状、文本和图像的功能。我们可以通过Graphics2D进行图片的缩放操作来产生缩略图。
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
public class ThumbnailDemo {
public static void main(String[] args) throws Exception {
File input = new File("orig.jpg");
BufferedImage originalImage = ImageIO.read(input);
int width = originalImage.getWidth() / 2;
int height = originalImage.getHeight() / 2;
BufferedImage resizedImage = new BufferedImage(width, height, originalImage.getType());
Graphics2D g = resizedImage.createGraphics();
g.drawImage(originalImage, 0, 0, width, height, null);
g.dispose();
File output = new File("thumbnail.jpg");
ImageIO.write(resizedImage, "jpg", output);
}
}
上述代码通过原图的宽和高指定了缩略图的大小。然后,创建了一个新的BufferedImage对象,并使用Graphics2D对象进行图片的绘制和缩放。最后将缩略图写入到新的路径中。