一、引言
需要为一张图片生成缩略图。
可以通过开源jar包thumbnailator-0.4.8.jar中提供的类来实现。
二、示例代码
解压jar包可以看到测试类:ThumbnailatorTest.java,其具体代码如下:
package com.wbf.test; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import javax.imageio.ImageIO; import net.coobird.thumbnailator.Thumbnails; import net.coobird.thumbnailator.geometry.Positions; /** * * @author yaohucaizi * */ public class ThumbnailatorTest { /** * * @param args * @throws IOException */ public static void main(String[] args) throws IOException { ThumbnailatorTest thumbnailatorTest = new ThumbnailatorTest(); thumbnailatorTest.test1(); thumbnailatorTest.test2(); thumbnailatorTest.test3(); thumbnailatorTest.test4(); thumbnailatorTest.test5(); thumbnailatorTest.test6(); thumbnailatorTest.test7(); thumbnailatorTest.test8(); thumbnailatorTest.test9(); } /** * 指定大小进行缩放 * * @throws IOException */ private void test1() throws IOException { /* * size(width,height) 若图片横比200小,高比300小,不变 * 若图片横比200小,高比300大,高缩小到300,图片比例不变 若图片横比200大,高比300小,横缩小到200,图片比例不变 * 若图片横比200大,高比300大,图片按比例缩小,横为200或高为300 */ Thumbnails.of("images/test.jpg").size(200, 300).toFile( "C:/image_200x300.jpg"); Thumbnails.of("images/test.jpg").size(2560, 2048).toFile( "C:/image_2560x2048.jpg"); } /** * 按照比例进行缩放 * * @throws IOException */ private void test2() throws IOException { /** * scale(比例) */ Thumbnails.of("images/test.jpg").scale(0.25f) .toFile("C:/image_25%.jpg"); Thumbnails.of("images/test.jpg").scale(1.10f).toFile( "C:/image_110%.jpg"); } /** * 不按照比例,指定大小进行缩放 * * @throws IOException */ private void test3() throws IOException { /** * keepAspectRatio(false) 默认是按照比例缩放的 */ Thumbnails.of("images/test.jpg").size(120, 120).keepAspectRatio(false) .toFile("C:/image_120x120.jpg"); } /** * 旋转 * * @throws IOException */ private void test4() throws IOException { /** * rotate(角度),正数:顺时针 负数:逆时针 */ Thumbnails.of("images/test.jpg").size(1280, 1024).rotate(90).toFile( "C:/image+90.jpg"); Thumbnails.of("images/test.jpg").size(1280, 1024).rotate(-90).toFile( "C:/iamge-90.jpg"); } /** * 水印 * * @throws IOException */ private void test5() throws IOException { /** * watermark(位置,水印图,透明度) */ Thumbnails.of("images/test.jpg").size(1280, 1024).watermark( Positions.BOTTOM_RIGHT, ImageIO.read(new File("images/watermark.png")), 0.5f) .outputQuality(0.8f).toFile( "C:/image_watermark_bottom_right.jpg"); Thumbnails.of("images/test.jpg").size(1280, 1024).watermark( Positions.CENTER, ImageIO.read(new File("images/watermark.png")), 0.5f) .outputQuality(0.8f).toFile("C:/image_watermark_center.jpg"); } /** * 裁剪 * * @throws IOException */ private void test6() throws IOException { /** * 图片中心400*400的区域 */ Thumbnails.of("images/test.jpg").sourceRegion(Positions.CENTER, 400, 400).size(200, 200).keepAspectRatio(false).toFile( "C:/image_region_center.jpg"); /** * 图片右下400*400的区域 */ Thumbnails.of("images/test.jpg").sourceRegion(Positions.BOTTOM_RIGHT, 400, 400).size(200, 200).keepAspectRatio(false).toFile( "C:/image_region_bootom_right.jpg"); /** * 指定坐标 */ Thumbnails.of("images/test.jpg").sourceRegion(600, 500, 400, 400).size( 200, 200).keepAspectRatio(false).toFile( "C:/image_region_coord.jpg"); } /** * 转化图像格式 * * @throws IOException */ private void test7() throws IOException { /** * outputFormat(图像格式) */ Thumbnails.of("images/test.jpg").size(1280, 1024).outputFormat("png") .toFile("C:/image_1280x1024.png"); Thumbnails.of("images/test.jpg").size(1280, 1024).outputFormat("gif") .toFile("C:/image_1280x1024.gif"); } /** * 输出到OutputStream * * @throws IOException */ private void test8() throws IOException { /** * toOutputStream(流对象) */ OutputStream os = new FileOutputStream( "C:/image_1280x1024_OutputStream.png"); Thumbnails.of("images/test.jpg").size(1280, 1024).toOutputStream(os); } /** * 输出到BufferedImage * * @throws IOException */ private void test9() throws IOException { /** * asBufferedImage() 返回BufferedImage */ BufferedImage thumbnail = Thumbnails.of("images/test.jpg").size(1280, 1024).asBufferedImage(); ImageIO.write(thumbnail, "jpg", new File( "C:/image_1280x1024_BufferedImage.jpg")); } }
三、补充说明
以上的示例代码中不仅可以按大小或比例生成缩略图,还提供了生成水印、裁剪、转换图像格式、输出到OutputStream、输出到BufferedImage等功能。
相关推荐
在本文中,我们将介绍使用Java生成缩略图的方法。 缩略图生成方法 在 Java 中,生成缩略图可以使用多种方法,本文将介绍两种常见的方法。 方法一:使用BufferedImage类 使用BufferedImage类可以实现图片的缩略图...
### Java 上传图片生成缩略图的知识点解析 在现代Web开发中,处理图像是一项常见的需求,尤其是在涉及用户上传图片的应用场景中。本篇文章将基于提供的代码片段详细讲解如何使用Java来实现上传图片并自动生成缩略图...
6. **Java bindings for FFmpeg:** 如果不希望通过命令行接口,还可以使用Java对FFmpeg的绑定库,如JAVE(Java Audio Video Encoder),它提供了一个友好的API来执行FFmpeg的任务,包括生成缩略图。 7. **处理步骤...
在本文中,我们将深入探讨如何基于Springmvc实现图片上传及生成缩略图的功能。Springmvc是Spring框架的一个重要模块,用于构建MVC模式的Web应用,它提供了强大的数据绑定、模型映射、视图渲染等功能,是Java开发中的...
* @param quality 压缩清晰度 建议为1.0 * @param smallIcon 压缩图片后,添加的扩展名(在图片后缀名前添加) * @param percentage 是否等比压缩 若true宽高比率将将自动调整 * @author zhengsunlei * @return ...
将图片生成缩略图和转换为二进制的工具类,缩略图大小可调
java 生成缩略图类 源代码 (已经封装好)
在Java编程环境中,批量上传图片并生成缩略图是一项常见的需求,特别是在开发Web应用时,例如内容管理系统或者论坛。这个任务通常涉及到文件处理、图像处理和服务器端编程等多个技术领域。接下来,我们将深入探讨...
java图片裁剪和java生成缩略图.pdf
java上传图片,处理图片,word转pdf图片缩略图生成,替换所有图片的ip地址工具类
生成缩略图的基本步骤包括读取原始图片,设置缩放比例,然后进行重采样和缩放,最后保存为新的图片文件。缩略图的生成不仅可以减少网络传输的负担,还能在展示大量图片时提高用户体验。 具体实现时,JSP页面可能有...
java大图生成缩略图。。。。。。。。。。。。
网上找的缩略图生成方法都不够清晰,于是决定自己研究和改进生成缩略图方法。此方法压缩后的图片小,清晰度高,压缩速度快。5000张图片大概抽根烟的功夫就压缩完了。高清的哦。各种参数都是可配的,方便移植到自己...
在Java编程环境中,获取视频缩略图是一项常见的需求,尤其在多媒体应用或者视频分享平台中。这个过程涉及到多媒体处理和图像操作的知识。本文将详细解释如何在Java中实现这一功能,以及相关的技术点。 首先,Java...
在Java服务器页面(JSP)中,上传图片并生成缩略图是一项常见的需求,尤其在构建网站或Web应用时。这个过程涉及到多个步骤,包括文件上传、图片处理和存储。以下将详细介绍如何实现这一功能。 1. **文件上传**: -...
平时工作中用到的一些技术点,拿出来和大家共享一下。 有些功能比较粗糙,如果大家有更加完善的示例或建议,欢迎交流。...1、jpg图片缩略图:ImageUtil 2、poi创建excel:CDSHdlReport 3、计算表达式求值:Cal
使用jspsmartupload实现图片的批量上传,并保存到服务器的指定路径,自动生成缩略图,与图片的路径相同。(需要导入jspsmartupload.jar,在工程下的WebContent\WEB-INF\lib中 )
根据提供的文件信息,我们可以总结出以下关于“Java生成缩略图”的相关知识点: ### Java生成缩略图基础知识 #### 缩略图的概念 缩略图是原始图像的一个较小版本,通常用于网页展示、图片预览等场景。通过生成缩略...
在Java编程中,生成缩略图是一项常见的任务,特别是在处理图像处理、网页设计或移动应用开发时。这个任务涉及到读取原始图像,调整其尺寸,然后保存为较小的版本,即缩略图。在这个过程中,我们可以使用Java的内置库...