`
阿杜杜不是阿木木
  • 浏览: 21507 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

Java生成缩略图工具类

 
阅读更多

更新日期20150902

package com.jh.util;

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.File;
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;

/**
 * @desc生成图片缩略图
 **/
@SuppressWarnings("restriction")
public class ImageThumbnailUtil {
	public static void main(String[] args) {
		String filename = "src/love.jpg";
		String outFilename = "src/love_thumb.jpg";
		try {
			createThumbnail(filename, 390, 225, 100, outFilename);
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public static void toThumbnail(String uploadPath,String fileName){
		String uploadThumbPath =uploadPath+"/thumb/";
		File file = new File(uploadThumbPath);
		if (!file.isFile()) {
			file.mkdirs();
		}
		System.out.println(uploadPath+fileName);
		System.out.println(uploadThumbPath+fileName);
		try {
			createThumbnail(uploadPath+"/"+fileName, 390, 225, 100, uploadThumbPath+fileName);
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

private static void createThumbnail(String filename, int thumbWidth,int thumbHeight, int quality, String outFilename)
		throws InterruptedException,FileNotFoundException, IOException {

		// 加载图片文件
		Image image = Toolkit.getDefaultToolkit().getImage(filename);
		MediaTracker mediaTracker = new MediaTracker(new Container());
		mediaTracker.addImage(image, 0);
		// 强制加载图像
		mediaTracker.waitForID(0);
		// 测试图片是否加载成功:
		System.out.println(mediaTracker.isErrorAny());

		// 通过参数判断缩略图大小
		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);
		}

		// 创建缩略图对象 并设置quality
		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);
		// 输出缩略图
		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生成图片缩略图和二进制文件的工具类

    将图片生成缩略图和转换为二进制的工具类,缩略图大小可调

    java 生成缩略图

    在Java编程中,生成缩略图是一项常见的任务,特别是在处理图像处理、网页设计或移动应用开发时。这个任务涉及到读取原始图像,调整其尺寸,然后保存为较小的版本,即缩略图。在这个过程中,我们可以使用Java的内置库...

    java视频生成图片(缩略图)-实例-(指定时间)

    6. **Java bindings for FFmpeg:** 如果不希望通过命令行接口,还可以使用Java对FFmpeg的绑定库,如JAVE(Java Audio Video Encoder),它提供了一个友好的API来执行FFmpeg的任务,包括生成缩略图。 7. **处理步骤...

    java生成缩略图的方法示例

    Java 生成缩略图的方法示例 Java 生成缩略图是指使用 Java 语言生成缩略图的过程,这个过程中涉及到各种图形处理技巧。下面将详细介绍 Java 生成缩略图的方法示例。 图像处理基础 在 Java 中,图像处理是通过使用...

    java生成缩略图.zip

    在这个"java生成缩略图.zip"压缩包中,我们可能找到了一份Java源代码,用于演示如何在Java环境下创建图像的缩略图。 首先,我们要了解在Java中生成缩略图的关键概念和技术。Java的`java.awt.image`和`javax.imageio...

    java上传图片,处理图片,word转pdf图片缩略图生成

    java上传图片,处理图片,word转pdf图片缩略图生成,替换所有图片的ip地址工具类

    java缩略图

    一个不错的工具类,上传的图片根据长宽的判断,按比例缩放生成另一张小图,可以减少浏览的浪费

    jsp上传图片并生成缩略图

    在Java服务器页面(JSP)中,上传图片并生成缩略图是一项常见的需求,尤其在构建网站或Web应用时。这个过程涉及到多个步骤,包括文件上传、图片处理和存储。以下将详细介绍如何实现这一功能。 1. **文件上传**: -...

    java利用ffmpeg获取视频缩略图

    首先,ffmpeg是一个强大的命令行工具,它支持多种视频、音频格式的处理,包括转换、合并、剪辑以及生成缩略图等。在Java中使用ffmpeg,通常会通过调用系统命令或者使用第三方库如`Xuggle`或`ffmpeg-java`来实现。在...

    Java中gif动图缩略图处理jar包

    这个jar包为开发者提供了一个方便的API来处理GIF图像的缩略图生成,使得在Java项目中实现这一功能变得更加简单。 GIF4J库的核心功能包括读取GIF文件、解析其帧信息、调整图像尺寸并重新组合成新的GIF文件。以下是...

    java 缩略图实现

    在Java编程中,生成缩略图是一项常见的任务,特别是在处理图像处理、网页设计或移动应用开发等领域。这个主题涉及到如何利用Java的APIs来创建图片的缩小版本,以节省存储空间,提高页面加载速度,或者优化用户体验。...

    jSP上传图片生成缩略图

    "bianxiaotu"可能是用于生成缩略图的Java类或工具的名称,具体实现可能因项目而异,但核心思想与上述步骤一致。总的来说,这个任务结合了JSP页面交互、文件上传处理以及图像处理技术,是Web开发中的一个典型应用场景...

    pdfbox,生成pdf文件的缩略图

    在实际应用中,你可能需要对整个PDF文档的所有页面生成缩略图,并将它们保存在一个集合或目录中,以便在用户界面中展示。同时,为了提高性能,可以考虑使用多线程处理多个PDF文件的缩略图生成。 总结来说,PDFBox...

    java缩略图jar包

    在Java编程中,生成缩略图通常涉及到复杂的图像处理算法,包括图像重采样、比例调整、颜色空间转换等。thumbnailator库通过封装这些复杂操作,使得开发者只需要几行代码就能完成缩略图的创建。下面我们将深入探讨...

    生成缩列图的java工具类

    在Java编程环境中,生成缩略图是一项常见的任务,特别是在处理图像相关的应用中,例如网站、移动应用或桌面软件。这个“生成缩列图的java工具类”提供了方便的方法来创建和管理图片的缩略版本。这里我们将深入探讨...

    thumbnailator java用于图片压缩 生成缩略图 添加水印等

    thumbnailator(包括jar包跟api) java用于图片压缩 生成缩略图 添加水印等 这是我见过最好的压缩工具了 使用方法: Thumbnails.of(new File("path/to/directory").listFiles()) .size(640, 480) .outputFormat(...

    java根据url抓取并生成缩略图的示例

    在Java编程中,生成缩略图是一项常见的任务,特别是在处理图像或者构建Web应用程序时。这个示例展示了如何根据一个URL抓取远程图像并将其转换为缩略图。下面将详细解释这段代码的工作原理和涉及的关键知识点。 首先...

Global site tag (gtag.js) - Google Analytics