`
caiceclb
  • 浏览: 239469 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

参考资料写了一个生成缩略图的类

    博客分类:
  • JEE
SUN 
阅读更多

写了有一年多了,还是拿出来,以备后用

 

 

package cn.tofishes.util.image;

import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import com.sun.image.codec.jpeg.ImageFormatException;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
/**
 * 生成图片缩略图
 * @author ToFishes
 *
 */
public class ReduceImage {

	/**
	 * 自定义宽高生成缩略图
	 * @param imgSrc 原图片的绝对路径名
	 * @param imgDist 生成缩略图后的存放绝对路径名
	 * @param widthDist 缩略图的宽度
	 * @param heightDist 缩略图的高度
	 */
	public static void reduceImg(String imgSrc, String imgDist, int widthDist,
			int heightDist) {
		try {
			File srcfile = new File(imgSrc);
			if (!srcfile.exists()) {
				return;
			}
			Image src = javax.imageio.ImageIO.read(srcfile);

			reduceImg(src, imgDist, widthDist, heightDist);

		} catch (IOException ex) {
			ex.printStackTrace();
		}
	}
	/**
	 * 按照图片原有比例生成图片缩略图,maxSize为图片高度、宽度的最大值。
	 * @param imgSrc 原图片的绝对路径
	 * @param imgDist 生成缩略图后的存放绝对路径名
	 * @param maxSize 图片高度、宽度的最大值。
	 */
	public static void reduceImg(String imgSrc, String imgDist, int maxSize) {
		File srcfile = new File(imgSrc);
		if (!srcfile.exists()) {
			return;
		}
		try {
			Image src = javax.imageio.ImageIO.read(srcfile);
			
			float width = src.getWidth(null);
			float height = src.getHeight(null);
			
			/* 获得图片缩放的比例,哪个大就以哪个为标准
			 * 前面的width或height得设置为float类型,否则相除得整型0
			 *  */
			float proportion = width > height ? maxSize/width : maxSize/height;

			int widthDist = Math.round(width*proportion);
			int heightDist = Math.round(height*proportion);

			reduceImg(src, imgDist, widthDist, heightDist);
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

	public static void reduceImg(Image src, String imgDist, int widthDist,
			int heightDist) throws ImageFormatException, IOException {
		
			if (widthDist <= 0 || heightDist <= 0 ) {
				throw new ImageFormatException("缩略图高宽不能等于小于0");
			}
			BufferedImage tag = new BufferedImage(widthDist, heightDist,
					BufferedImage.TYPE_INT_RGB);

			// tag.getGraphics().drawImage(src.getScaledInstance(widthDist,
			// heightDist, Image.SCALE_SMOOTH), 0, 0, null);
			tag.getGraphics().drawImage(
					src.getScaledInstance(widthDist, heightDist,
							Image.SCALE_AREA_AVERAGING), 0, 0, null);

			FileOutputStream out = new FileOutputStream(imgDist);
			JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
			encoder.encode(tag);
			out.close();
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {

		String imageSrc = "G:/1218794106_ddvip_459.jpg";
		String imgDist = "G:/1218794106.jpg";
		long start = System.currentTimeMillis();
		ReduceImage.reduceImg(imageSrc, imgDist, 120);
		long end = System.currentTimeMillis();
		System.out.println("耗用时间为:  --  " + (end - start) + "毫秒");
		System.out.println("耗用时间为:  --  " + (end - start) / 1000.0 + "秒");
	}

}
分享到:
评论

相关推荐

    一个批量生成缩略图工具的源代码

    一个批量生成缩略图工具的源代码,winform源代码,可以参考它的做法。

    C#生成缩略图

    利用C#语言生成图片的缩略图,有需要可以参考一下。

    Struts上传图片生成缩略图

    Struts上传图片生成缩略图,自己写得,不是很好,供大家参考。

    使用ThinkPHP生成缩略图及显示

    使用ThinkPHP生成缩略图及显示,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 首先了解父类Image.class.php(ThinkPHP/Library/Think/Image.class.php)中的一些函数 1:open() 打开被处理的图片 2:thumb() ...

    java生成缩略图的方法示例

    主要介绍了java生成缩略图的方法,结合具体实例形式分析了java生成缩略图过程中所涉及的各种常见的图形处理技巧,需要的朋友可以参考下

    PHP网站缩略图在线生成网站源码

    PHP网站缩略图在线生成网站源码是一款基于api接口实现在线生成三端网站缩略图效果的源码,经测试接口已失效,但里面的部分代码还是值得我们学习,有需要的朋友可以参考下。PHP网站缩略图在线生成网站源码是一款基于...

    PHP批量生成缩略图源代码

    该压缩包是本人用PHP开发的对文件夹中的图片批量生成缩略图程序,支持JPG、GIF、PNG三种图片格式,源代码仅供学习参考,不得用于商业用途,否则后果自负。 Dengzhong dwjnhkbc123@163.com QQ 751667650 2010-02-...

    php 根据url自动生成缩略图并处理高并发问题

    服务器生成缩略图的时机一般分为两种: 1.上传文件时生成 优点:上传时就已经生成需要的缩略图,读取时不需要再判断,... 关于如何根据url自动生成缩略图的原理及实现,可以参考我之前写的《php 根据url自动生成缩略图

    python使用pil生成缩略图的方法

    主要介绍了python使用pil生成缩略图的方法,涉及Python使用pil模块操作图片的技巧,非常具有实用价值,需要的朋友可以参考下

    Thinkphp调用Image类生成缩略图的方法

    主要介绍了Thinkphp调用Image类生成缩略图的方法,实例分析了Thinkphp调用Image类生成缩略图的使用原理与相关技巧,需要的朋友可以参考下

    上传图片并生成高清缩略图源码 ZBHUploadPicThumbnails.rar

    简单的图片上传,生成缩略图源码,代码非常简单,适合初学者参考 二、菜单功能 运行后,点击浏览,选择图片,点击上传图片,即可呈现缩略图效果 三、注意事项 1、开发环境为Visual Studio 2010,使用.net 4.0开发...

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

    主要介绍了java根据url抓取并生成缩略图的示例,需要的朋友可以参考下

    php实现根据url自动生成缩略图的方法

    主要介绍了php实现根据url自动生成缩略图的方法,详细讲述了相关库的使用、配置文件写法及类文件的用法示例,需要的朋友可以参考下

    Java实现图片等比例缩略图

    这个小项目主要是利用java Thumbnaillator类库实现对图片的缩放功能,代码参考自慕课网Java实现图片等比例缩略图教学视频,目的为需求源码的小伙伴提供一个参考,如有问题大家再一起交流(附:资源积分是必选项,...

    支持png透明图片的php生成缩略图类分享

    主要介绍了支持png透明图片的php生成缩略图类分享,本文代码基于GD2图形库,实现支持png透明图片生成缩略图,需要的朋友可以参考下

    JavaScript 图片高清缩略图实例

    高清生成图片缩略图,效果跟“凡客诚品”的是一样的,各种效果都有! 很全面,代码全,很不错的一个学习参考例子。

    C#简单生成缩略图的方法

    本文实例讲述了C#简单生成缩略图的方法。分享给大家供大家参考。具体实现方法如下: /// /// 生成缩略图 /// /// 源图路径(物理路径) /// 缩略图路径(物理路径) /// 缩略图宽度 /// 缩略图高度 /// 生成缩略...

    Servlet文件上传、下载及缩略图的生成

    一个完整的Servlet文件上传、下载及缩略图的生成的代码,可以直接在eclipse中运行,本程序适合多包上传和下载,对于图片类文件可以生成缩略图,供大家参考,改程序已经过测试。

    ASP.NET实现上传图片并生成缩略图的方法

    本文实例讲述了ASP.NET实现上传图片并生成缩略图的方法。分享给大家供大家参考,具体如下: protected void bt_upload_Click(object sender, EventArgs e) { //检查上传文件的格式是否有效 if (this.UploadFile....

Global site tag (gtag.js) - Google Analytics