您的位置:

使用Java生成缩略图

使用Java生成缩略图

更新:

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