`

为图片文件生成缩略图

 
阅读更多
package ImageTest;

import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.awt.image.WritableRaster;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

public class Test {

	/**
	 * 为图片文件生成缩略图
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			//参数1(源图片路径),参数2 (缩略图路径),参数3(缩略图宽)参数4(缩略图高)
			Test.saveImageAsJpg("E:\\QQ20120612154244.gif", "E:\\test.jpg", 400, 400);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 生成缩略图
	 * @param fromFileStr 源图片路径
	 * @param saveToFileStr 缩略图路径
	 * @param width 缩略图的宽
	 * @param hight 缩略图的高
	 * @throws IOException
	 */
	public static void saveImageAsJpg(String fromFileStr,String saveToFileStr,int width,int hight) throws IOException
	{
		BufferedImage srcImage;
		String imgType="JPEG";
		if(fromFileStr.toLowerCase().endsWith(".png")){
			imgType="PNG";
		}
		File saveFile=new File(saveToFileStr);
		File fromFile=new File(fromFileStr);
		srcImage=ImageIO.read(fromFile);
		if(width>0||hight>0){
			srcImage=resize(srcImage,width,hight);
		}
		ImageIO.write(srcImage, imgType, saveFile);
	}

	/**
	 * 将源图片的BufferedImage对象生成缩略图
	 * @param source 源图片的BufferedImage对象
	 * @param targetW 缩略图的宽
	 * @param targetH 缩略图的高
	 * @return
	 */
	private static BufferedImage resize(BufferedImage source, int targetW,
			int targetH) {
		int type=source.getType();
		BufferedImage target=null;
		double sx=(double)targetW/source.getWidth();
		double sy=(double)targetH/source.getHeight();
		if(sx>sy)
		{
			sx=sy;
			targetW=(int)(sx*source.getWidth());
		}else{
			sy=sx;
			targetH=(int)(sy*source.getHeight());
		}
		
		if(type==BufferedImage.TYPE_CUSTOM){
			ColorModel cm=source.getColorModel();
				WritableRaster raster=cm.createCompatibleWritableRaster(targetW, targetH);
				boolean alphaPremultiplied=cm.isAlphaPremultiplied();
				target=new BufferedImage(cm,raster,alphaPremultiplied,null);
		}else{
			target=new BufferedImage(targetW, targetH,type);
		}
		Graphics2D g=target.createGraphics();
		g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
		g.drawRenderedImage(source, AffineTransform.getScaleInstance(sx, sy));
		g.dispose();
		return target;
	}
	
	
	
}

 

转载地址:http://blog.csdn.net/hehe9737/article/details/7656308

分享到:
评论

相关推荐

    java 图片生成缩略图

    "java 图片生成缩略图" Java 图片生成缩略图是Java程序开发中一个常见的需求,通过将图片以缩略图形式展示,可以提高用户体验和网站性能。在本文中,我们将介绍使用Java生成缩略图的方法。 缩略图生成方法 在 ...

    基于Springmvc的上传图片并生成缩略图

    在本文中,我们将深入探讨如何基于Springmvc实现图片上传及生成缩略图的功能。Springmvc是Spring框架的一个重要模块,用于构建MVC模式的Web应用,它提供了强大的数据绑定、模型映射、视图渲染等功能,是Java开发中的...

    java 上传图片生成缩略图

    ### Java 上传图片生成缩略图的知识点解析 在现代Web开发中,处理图像是一项常见的需求,尤其是在涉及用户上传图片的应用场景中。本篇文章将基于提供的代码片段详细讲解如何使用Java来实现上传图片并自动生成缩略图...

    jsp上传图片并生成缩略图

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

    html5图片上传本地生成缩略图预览

    在生成缩略图后,我们可以将Canvas的内容转换为Data URL,然后设置为img标签的src属性,实现图片的预览。这样,用户在上传图片前就能看到缩略图,提升交互性。 实现这个功能的基本步骤如下: 1. **监听文件输入...

    JSP上传图片并生成缩略图

    生成缩略图的基本步骤包括读取原始图片,设置缩放比例,然后进行重采样和缩放,最后保存为新的图片文件。缩略图的生成不仅可以减少网络传输的负担,还能在展示大量图片时提高用户体验。 具体实现时,JSP页面可能有...

    pdf生成缩略图

    PDF生成缩略图是将PDF文档中的页面转换成小尺寸的图像表示,通常用于预览、索引或在文件管理器中快速查看PDF内容。在IT领域,这涉及到PDF处理和图像处理技术。以下是一些关于如何在C#中生成PDF缩略图的关键知识点: ...

    asp.net 多文件上传并对图片文件生成缩略图

    接下来,我们处理图片文件生成缩略图。可以使用Image类和Graphics类提供的方法来完成。首先,读取原图,然后根据需要的尺寸创建一个新的Bitmap对象,再使用Graphics.DrawImage方法将原图绘制到新Bitmap上,最后保存...

    文件夹缩略图生成工具

    对于图片文件夹来说,生成缩略图尤其有用,特别是当文件夹包含大量图片时,它避免了逐一打开图片进行检查的繁琐过程。 "Snap2IMG"可能是这个工具的程序名称或者是一个内部使用的命令,可能用于快速捕获图片并将其...

    上传图片并生成高清晰缩略图

    - 通过条件判断决定是基于宽度还是高度来生成缩略图。 6. **保存缩略图:** - 生成缩略图后,将其保存到指定路径下。 - 可以在文件名中加入特定标识符,例如“_thumb”,以便于区分原图和缩略图。 7. **返回...

    Asp.net上传图片同时生成缩略图和水印图

    在ASP.NET中,上传图片并生成缩略图和水印图是一项常见的需求,特别是在创建网站或者应用程序时,需要处理用户上传的图像。以下是一个关于如何在ASP.NET中实现这个功能的详细说明。 首先,上传图片是通过HTML的`...

    asp无组件上传图片,aspjpeg生成缩略图和添加水印.zip

    在这个"asp无组件上传图片,aspjpeg生成缩略图和添加水印.zip"压缩包中,包含了解决这一问题的代码示例。主要涉及到以下几个核心知识点: 1. **图片上传**: ASP可以通过表单提交实现图片文件的上传。用户选择本地...

    多图片上传-判断图片像素-生成缩略图

    在IT领域,多图片上传、判断图片像素以及生成缩略图是常见的图像处理技术,尤其在网站开发和移动应用设计中极为重要。这些功能能够优化用户体验,减少服务器存储空间,并加速网页加载速度。下面我们将详细探讨这三个...

    在ASP.NET中上传图片并生成缩略图

    ### 在ASP.NET中上传图片并生成缩略图 在Web应用开发中,处理用户上传的图片是一项常见的功能需求。尤其对于那些需要展示图像的应用(如博客、电子商务网站等),能够高效地处理这些图像,包括上传原始图片以及自动...

    js实现上传图片即刻生成缩略图预览

    "js实现上传图片即刻生成缩略图预览"这个功能就是为了让用户体验更加流畅,允许他们在上传图片的同时立即查看预览效果,而无需等待完整的图片加载。这在处理大尺寸或者高分辨率图片时尤其有用,因为生成的缩略图可以...

    缩略图生成sample代码

    缩略图生成应当考虑性能问题,因为可能会有大量文件需要生成缩略图。缓存策略可以用来减少重复工作,例如,当同一文件的缩略图已经生成过,可以存储在内存中以供后续使用。此外,还可以根据文件大小或复杂性来调整...

    如何在Delphi中生成图片缩略图的例子.rar

    在Delphi中,可以使用`TImage`组件来显示图像,但生成缩略图则需要更底层的图像处理函数。Windows API 提供了`GDI+`库,它包含了一系列用于图像处理的函数,如`Graphics`和`Bitmap`类,可以用来创建和操作缩略图。 ...

    java批量上传图片并生成缩略图

    在Java编程环境中,批量上传图片并生成缩略图是一项常见的需求,特别是在开发Web应用时,例如内容管理系统或者论坛。这个任务通常涉及到文件处理、图像处理和服务器端编程等多个技术领域。接下来,我们将深入探讨...

    java生成图片缩略图和二进制文件的工具类

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

    C#生成缩略图(图片按比例缩小 空白处用指定颜色填充)

    4. 图片保存:生成缩略图后,可以使用System.Drawing.Image类的Save方法将缩略图保存到指定的文件路径。 在上面的代码中,使用System.Drawing.Image类的FromFile方法将原图片加载到内存中,然后使用Image的Width和...

Global site tag (gtag.js) - Google Analytics