`
kingxianstar
  • 浏览: 20189 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

如何为图片文件生成缩略图

阅读更多
      在某些系统中,需要使用和管理很多图片,现在图片占用的资源空间越来越大,因此需要将图片缩小,特别是一些网站上的相册会有很多的缩略图。
      在实现缩略图的过程中,主要使用BufferedImage和ImageIO两个类。首先将图片信息读取到BufferedImage对象中,接着构造缩略图的BufferedImage对象,最后将缩略图输出。ImageIO类提供了read()和write()方法,用于读取图片中的信息。
生成缩略图的代码如下:
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.awt.image.WritableRaster;
import java.awt.*;
import java.awt.geom.AffineTransform;
import java.io.InputStream;
import java.io.File;
import java.io.FileOutputStream;


public class ImageTest{
	/**
	 *生成缩略图
	 *fromFileStr:源图片路径
	 *saveToFileStr:缩略图路径
	 *width:缩略图的宽
	 *hight:缩略图的高
	 */

	 public static void saveImageAsJpg(String fromFileStr,String saveToFileStr,int width,int hight) 
throws Exception{
	 	BufferedImage srcImage;
	 	String imgType="JPEG";
	 	if(fromFileStr.toLowerCase().endsWith(".png"));{
	 		imgType="PNG";
	 	}
	 	File fromFile=new File(fromFileStr);
	 	File saveFile=new File(saveToFileStr);
	 	srcImage=ImageIO.read(fromFile);
	 	if(width>0||hight>0){
	 		srcImage=resize(srcImage,width,hight);
	 	}
	 	ImageIO.write(srcImage,imgType,saveFile);

	 }


	 /**
	  *将源图片的BufferedImage对象生成缩略图
	  *source:源图片的BufferedImage对象
	  *targetW:缩略图的宽
	  *targetH:缩略图的高
	  */


	  public 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();
	  	//这里想实现在targetW,targetH范围内实现等比例的缩放。
             //如果不需要等比例的缩放则下面的if else语句注释掉即可

	  	if(sx>sy){
	  		sx=sy;
	  		targetW=(int)(sx*source.getWidth());
	  	}
	  	else {
	  		sy=sx;
	  		targetH=(int)(sx*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;

	  	}
	  	public static void main(String args[]){
	  		try{
	  			ImageTest.saveImageAsJpg("C:\\Users\\h-xxw\\Desktop\\Vedio\\eq.jpg",
         "D:\\basic\\bihao.jpg",100,100);
	  		}
	  		catch(Exception e){
	  			e.printStackTrace();
	  		}
	  	}


}

分享到:
评论

相关推荐

    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