在某些系统中,需要使用和管理很多图片,现在图片占用的资源空间越来越大,因此需要将图片缩小,特别是一些网站上的相册会有很多的缩略图。
在实现缩略图的过程中,主要使用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生成缩略图的方法。 缩略图生成方法 在 ...
在本文中,我们将深入探讨如何基于Springmvc实现图片上传及生成缩略图的功能。Springmvc是Spring框架的一个重要模块,用于构建MVC模式的Web应用,它提供了强大的数据绑定、模型映射、视图渲染等功能,是Java开发中的...
### Java 上传图片生成缩略图的知识点解析 在现代Web开发中,处理图像是一项常见的需求,尤其是在涉及用户上传图片的应用场景中。本篇文章将基于提供的代码片段详细讲解如何使用Java来实现上传图片并自动生成缩略图...
在Java服务器页面(JSP)中,上传图片并生成缩略图是一项常见的需求,尤其在构建网站或Web应用时。这个过程涉及到多个步骤,包括文件上传、图片处理和存储。以下将详细介绍如何实现这一功能。 1. **文件上传**: -...
在生成缩略图后,我们可以将Canvas的内容转换为Data URL,然后设置为img标签的src属性,实现图片的预览。这样,用户在上传图片前就能看到缩略图,提升交互性。 实现这个功能的基本步骤如下: 1. **监听文件输入...
生成缩略图的基本步骤包括读取原始图片,设置缩放比例,然后进行重采样和缩放,最后保存为新的图片文件。缩略图的生成不仅可以减少网络传输的负担,还能在展示大量图片时提高用户体验。 具体实现时,JSP页面可能有...
PDF生成缩略图是将PDF文档中的页面转换成小尺寸的图像表示,通常用于预览、索引或在文件管理器中快速查看PDF内容。在IT领域,这涉及到PDF处理和图像处理技术。以下是一些关于如何在C#中生成PDF缩略图的关键知识点: ...
接下来,我们处理图片文件生成缩略图。可以使用Image类和Graphics类提供的方法来完成。首先,读取原图,然后根据需要的尺寸创建一个新的Bitmap对象,再使用Graphics.DrawImage方法将原图绘制到新Bitmap上,最后保存...
对于图片文件夹来说,生成缩略图尤其有用,特别是当文件夹包含大量图片时,它避免了逐一打开图片进行检查的繁琐过程。 "Snap2IMG"可能是这个工具的程序名称或者是一个内部使用的命令,可能用于快速捕获图片并将其...
- 通过条件判断决定是基于宽度还是高度来生成缩略图。 6. **保存缩略图:** - 生成缩略图后,将其保存到指定路径下。 - 可以在文件名中加入特定标识符,例如“_thumb”,以便于区分原图和缩略图。 7. **返回...
在ASP.NET中,上传图片并生成缩略图和水印图是一项常见的需求,特别是在创建网站或者应用程序时,需要处理用户上传的图像。以下是一个关于如何在ASP.NET中实现这个功能的详细说明。 首先,上传图片是通过HTML的`...
在这个"asp无组件上传图片,aspjpeg生成缩略图和添加水印.zip"压缩包中,包含了解决这一问题的代码示例。主要涉及到以下几个核心知识点: 1. **图片上传**: ASP可以通过表单提交实现图片文件的上传。用户选择本地...
在IT领域,多图片上传、判断图片像素以及生成缩略图是常见的图像处理技术,尤其在网站开发和移动应用设计中极为重要。这些功能能够优化用户体验,减少服务器存储空间,并加速网页加载速度。下面我们将详细探讨这三个...
### 在ASP.NET中上传图片并生成缩略图 在Web应用开发中,处理用户上传的图片是一项常见的功能需求。尤其对于那些需要展示图像的应用(如博客、电子商务网站等),能够高效地处理这些图像,包括上传原始图片以及自动...
"js实现上传图片即刻生成缩略图预览"这个功能就是为了让用户体验更加流畅,允许他们在上传图片的同时立即查看预览效果,而无需等待完整的图片加载。这在处理大尺寸或者高分辨率图片时尤其有用,因为生成的缩略图可以...
缩略图生成应当考虑性能问题,因为可能会有大量文件需要生成缩略图。缓存策略可以用来减少重复工作,例如,当同一文件的缩略图已经生成过,可以存储在内存中以供后续使用。此外,还可以根据文件大小或复杂性来调整...
在Delphi中,可以使用`TImage`组件来显示图像,但生成缩略图则需要更底层的图像处理函数。Windows API 提供了`GDI+`库,它包含了一系列用于图像处理的函数,如`Graphics`和`Bitmap`类,可以用来创建和操作缩略图。 ...
在Java编程环境中,批量上传图片并生成缩略图是一项常见的需求,特别是在开发Web应用时,例如内容管理系统或者论坛。这个任务通常涉及到文件处理、图像处理和服务器端编程等多个技术领域。接下来,我们将深入探讨...
将图片生成缩略图和转换为二进制的工具类,缩略图大小可调
4. 图片保存:生成缩略图后,可以使用System.Drawing.Image类的Save方法将缩略图保存到指定的文件路径。 在上面的代码中,使用System.Drawing.Image类的FromFile方法将原图片加载到内存中,然后使用Image的Width和...