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; } }
相关推荐
"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和...