Java中如何创建一个图片缩略图呢?

java-经验王 Java经验 发布时间:2021-11-01 09:50:03 阅读数:8094 1
下文笔者讲述使用Java代码创建图片缩略图的方法分享
实现思路:
    1.生成一个Image对象
	2.调整图片的尺寸大小,即可生成图片缩略图
例:
生成图片缩略图的示例分享
  private void createThumbnail(String filename, int thumbWidth, int thumbHeight, int quality, String outFilename) 
    throws InterruptedException, FileNotFoundException, IOException 
  { 
    // load image from filename 
    Image image = Toolkit.getDefaultToolkit().getImage(filename); 
    MediaTracker mediaTracker = new MediaTracker(new Container()); 
    mediaTracker.addImage(image, 0); 
    mediaTracker.waitForID(0); 
    // use this to test for errors at this point: System.out.println(mediaTracker.isErrorAny()); 
 
    // determine thumbnail size from WIDTH and HEIGHT 
    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); 
    } 
 
    // draw original image to thumbnail image object and 
    // scale it to the new size on-the-fly 
    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); 
 
    // save thumbnail image to 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(); 
  }
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202111/16357317001643.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者