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对象进行图片的绘制和缩放。最后将缩略图写入到新的路径中。