Java创建图片的缩略图--封装类

2021/4/9 14:27:08

本文主要是介绍Java创建图片的缩略图--封装类,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

import java.awt.Container;

import java.awt.Graphics2D;

import java.awt.Image;

import java.awt.MediaTracker;

import java.awt.RenderingHints;

import java.awt.Toolkit;

import java.awt.image.BufferedImage;

import java.io.BufferedOutputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

 

import com.sun.image.codec.jpeg.JPEGCodec;

import com.sun.image.codec.jpeg.JPEGEncodeParam;

import com.sun.image.codec.jpeg.JPEGImageEncoder;

 

public class Thumbnail

{

 

    /**

     * 

     * @param args   

     * @throws IOException 

     * @throws InterruptedException 

     */

    public static void main(String[] args) throws IOException, InterruptedException

    {

        Thumbnail test=new Thumbnail(); 

        test.createThumbnail("C:\\Documents and Settings\\Administrator\\桌面\\a.jpg", 50, 50, 100, "C:\\Documents and Settings\\Administrator\\桌面\\aaa.jpg");

 

    }

 

    /**

     * 创建图片的缩略图

     * @param     filename:图片路径

     *             thumbWidth:缩略图宽度

     *             thumbHeight:缩略图高度

     *             quality:缩略图输出质量

     *             outFilename:缩略图保存地址

     *      

     * @throws IOException 

     * @throws InterruptedException 

     */

    private void createThumbnail(String filename, int thumbWidth, int thumbHeight, int quality, String outFilename) 

     throws InterruptedException, FileNotFoundException, IOException 

     { 

     // 根据图片地址filename加载图片

     Image image = Toolkit.getDefaultToolkit().getImage(filename); 

     MediaTracker mediaTracker = new MediaTracker(new Container()); 

     mediaTracker.addImage(image, 0); 

     mediaTracker.waitForID(0); 

 

     // 确定像素

     double thumbRatio = (double)thumbWidth / (double)thumbHeight; 

     int imageWidth = image.getWidth(null); 

     int imageHeight = image.getHeight(null); 

     double imageRatio = (double)imageWidth / (double)imageHeight; 

     if (thumbRatio < imageRatio) { 

     thumbHeight = (int)(thumbWidth / imageRatio); 

     } else { 

     thumbWidth = (int)(thumbHeight * imageRatio); 

     }

 

     // 绘制缩略图

     BufferedImage thumbImage = new BufferedImage(thumbWidth, thumbHeight, BufferedImage.TYPE_INT_RGB); 

     Graphics2D graphics2D = thumbImage.createGraphics(); 

     graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); 

     graphics2D.drawImage(image, 0, 0, thumbWidth, thumbHeight, null);

 

     // 保存缩略图到保存路径outFilename

     BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(outFilename)); 

     JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); 

     JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(thumbImage); 

     quality = Math.max(0, Math.min(quality, 100)); 

     param.setQuality((float)quality / 100.0f, false); 

     encoder.setJPEGEncodeParam(param); 

     encoder.encode(thumbImage); 

     out.close(); 

     }

 

 

 

 

}



这篇关于Java创建图片的缩略图--封装类的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程