`
caiceclb
  • 浏览: 242382 次
  • 性别: 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作为开发平台,这对于学习和理解图像处理技术具有很高的参考价值。 首先,我们要了解Winform是什么。Winform是.NET Framework中的一个Windows应用程序...

    php 生成缩略图

    使用GD库生成缩略图的核心函数是`imagecreatetruecolor()`,它创建一个新的真彩色图像,然后用`imagecopyresampled()`将源图像缩放并复制到新图像上,以实现比例缩放。 ```php // 加载源图像 $source = ...

    无刷新上传--可生成缩略图--demo.zip

    本DEMO "无刷新上传--可生成缩略图--demo.zip" 恰好涵盖了这个领域的几个关键知识点,包括无刷新上传、PHP上传类的使用、远程上传以及生成缩略图。 首先,无刷新上传主要依赖于AJAX(Asynchronous JavaScript and ...

    C#生成缩略图

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

    pdfbox,生成pdf文件的缩略图

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

    缩略图批量生成器 (C# 附源码)

    而"BatchThumbnail"可能代表主程序或者处理批量生成缩略图的类或方法,负责读取图片文件、调用GDI+的函数生成缩略图,并将结果保存到指定位置。 综上所述,这个工具利用C#语言和GDI+库,提供了一种批量生成高质量...

    EasyGallery生成缩略图.7z

    《EasyGallery生成缩略图:源码解析与应用实践》 EasyGallery是一款广泛使用的图片展示插件,尤其在网页设计和开发中,它以其简洁的界面、强大的功能和灵活的自定义选项受到开发者喜爱。本篇文章将深入探讨...

    PHP/Asp/Asp.Net缩略图模式批量上传图片并生成缩略图片

    3. **生成缩略图**:可以使用System.Drawing命名空间中的类,如Bitmap和Graphics,来创建缩略图。也可以利用第三方库如ImageSharp。 4. **随机文件名**:使用`Guid.NewGuid().ToString()`生成唯一的文件ID,确保...

    使用ThinkPHP生成缩略图及显示

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

    .net上传图片生成缩略图,加文字水印和图片水印

    在.NET框架中,上传图片并生成缩略图、添加文字水印和图片水印是常见的图像处理需求。这篇博客文章提供了实现这些功能的源码,虽然描述部分为空,但我们可以根据标题和标签来深入探讨相关知识点。 首先,生成缩略图...

    Flash头像上传插件(旋转、拖拽、剪切、生成缩略图)

    本文将深入探讨一个基于Flash技术的头像上传插件,它提供了丰富的预处理功能,如旋转、拖拽、剪切以及生成缩略图等。这是一款专为提升用户体验设计的工具,使得用户在上传头像时能够自由编辑,以达到理想的效果。 ...

    三合一缩略图源码.zip

    【三合一缩略图源码】是一个开源项目,旨在为网站提供高效的缩略图生成解决方案。这个源码允许用户在不需复杂的编程知识的情况下,轻松地实现图片的预览和展示,同时还可以自定义添加广告位,提升网站的商业价值。 ...

    基于threejs的炫酷缩略图到全屏放大动画特效

    本项目即运用Three.js来实现一个从缩略图平滑过渡到全屏动画效果,为用户带来视觉上的惊喜。 首先,要理解Three.js的基本概念。Three.js是HTML5 Canvas、WebGL和SVG的封装库,它简化了3D对象的创建、渲染和交互。在...

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

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

    PHP实例开发源码—批量生成缩略图的代码.zip

    总的来说,这个实例提供了一个学习和参考的平台,帮助开发者理解和实践PHP的图像处理功能,特别是批量生成缩略图这一常见任务。通过深入研究和理解这个源码,开发者可以提升在PHP图像处理方面的技能,为未来的项目...

    PHP批量生成缩略图源代码

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

    Poapor远程上传组件 v1.1(自动生成缩略图)

    Poapor远程上传组件 v1.1 是一款专为服务器类应用设计的工具,它提供了强大的远程文件上传功能,并且具备自动生成缩略图的能力。此组件在原有的基础上进行了升级,为开发者带来了更丰富的选项和更灵活的配置,极大地...

    ASP.Net常用功能整理--生成图片的缩略图

    文件中可能涵盖了如何上传图片、如何调用生成缩略图的函数、如何在页面上显示缩略图等内容,是学习和理解这个功能的重要参考资料。 最后,`upFile`可能是上传图片的临时文件夹或者上传控件的名称。在ASP.NET中,...

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

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

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

    综上所述,ThinkPHP的Image类提供了一个非常方便和直观的方法来处理图像,特别是生成缩略图时,通过调用几个简单的方法就可以实现复杂的图像处理功能。这些操作在Web开发中非常实用,能够帮助开发者实现高效的图像...

Global site tag (gtag.js) - Google Analytics