一、Thumbnails 图片处理的用法

1、设置图片的缩放比例或者图片的质量比

第一步:导入maven的jar包

<dependency><groupId>net.coobird</groupId><artifactId>thumbnailator</artifactId><version>0.4.8</version>
</dependency>

第二步:获取一个Builder<File>对象

public static Builder<File> of(String... files)
{checkForNull(files, "Cannot specify null for input files.");checkForEmpty(files, "Cannot specify an empty array for input files.");return Builder.ofStrings(Arrays.asList(files));
} 

第三步:设置图片缩放比例

  • 通过Builder<File>对象的scale(double scale)方法
  • 通过Builder<File>对象的size(int width, int height)方法
  • 通过Builder<File>对象的height(int height)或width(int width)方法

第四步:设置图片质量比

  通过Builder<File>对象的outputQuality(double quality)

2、获取图片的信息

第一步:通过Thumbnails.Builder<File>的asBufferedImage()方法获取BufferedImage对象,把照片加载到内存中

第二步:

  通过BufferedImage对象的getHeight(null)获取图片的高度

  通过BufferedImage对象的getWidth(null)获取图片的宽度

小示例:

    public static boolean ThumbnailsCompressPic(String inputFile, String outputFile, int size, float quality) {File input = new File(inputFile);try {Thumbnails.Builder<File> fileBuilder = Thumbnails.of(input).scale(1.0).outputQuality(1.0);BufferedImage src = fileBuilder.asBufferedImage();if(src.getHeight(null) > size || src.getWidth(null) > size) {Thumbnails.Builder<File> builder = Thumbnails.of(input);builder.size(size, size); //取最大的尺寸变成size,然后等比缩放
                builder.outputQuality(quality).toFile(outputFile);} else {Thumbnails.of(input).scale(1.0).outputQuality(quality).toFile(outputFile);}return true;} catch (IOException e) {logger.error(e.getMessage(), e);}return false;}

二、Thumbnails 图片处理的用法

package com.image;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 PanYu* */
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"));}
}

【java框架】Thumbnails 图片处理--用法相关推荐

  1. java使用Thumbnails图片压缩

    Thumbnails图片压缩 这个很早之前就发在协会的博客园里了,链接在此Thumbnails图片压缩 每次上传图片到服务器的时候,都会由于图片过大导致加载很长时间,然后就想使用图片压缩可以稍微减轻一 ...

  2. linux下的c语言mysql编程,详解java google Thumbnails 图片处理

    在后端开发的过程中,都逃不开与文件传输特别是图片的传输打交道,但是因为现在各种拍照设备发展越来越快,拍出的照片更是越来越清晰,但是照片文件的大小也是越来越大了,手机拍照小则2M大则30M这在网络传输过 ...

  3. java google Thumbnails 图片处理

    在后端开发的过程中,都逃不开与文件传输特别是图片的传输打交道,但是因为现在各种拍照设备发展越来越快,拍出的照片更是越来越清晰,但是照片文件的大小也是越来越大了,手机拍照小则2M大则30M这在网络传输过 ...

  4. 2016 年 7 个最佳的 Java 框架

    在这段时间之中,Java作为在世界上需求最大的编程语言之一是毫无疑问的.在这里,我们收集了一下关于比较流行的框架,以方便广大软件开发者的日常所需. 根据RebelLabs进行的一项调查显示,在线媒体盟 ...

  5. java thumbnails 中心点_java Thumbnails 图片处理的使用

    在后端开发的过程中,都逃不开与文件传输特别是图片的传输打交道,但是因为现在各种拍照设备发展越来越快,拍出的照片更是越来越清晰,但是照片文件的大小也是越来越大了,手机拍照小则2M大则30M这在网络传输过 ...

  6. Java毕业设计_基于SSM框架的图片素材管理系统的设计与实现

    基于SSM框架的图片素材管理系统的设计与实现 基于SSM框架的图片素材管理系统的设计与实现mysql数据库创建语句 基于SSM框架的图片素材管理系统的设计与实现oracle数据库创建语句 基于SSM框 ...

  7. java使用Thumbnails压缩图片

    java使用Thumbnails压缩图片 有时候为了缓解服务器上的存储压力,我们需要将图片进行压缩以换取空间. 下面使用的是google提供的压缩方式: 一.导包 <!-- 压缩图片大小 --& ...

  8. java框架阶段个人总结

    框架 一套规范. 实际是他人实现的一系列接口和类的集合.通入导入对应框架的jar文件(maven项目导入对应的依赖),进行适当的配置,就能使用其中的所有内容. 开发者可以省去很多模板代码,如dao中的 ...

  9. Android批量图片载入经典系列——afinal框架实现图片的异步缓存载入

    一.问题描写叙述 在之前的系列文章中,我们使用了Volley和Xutil框架实现图片的缓存载入,接下来我们再介绍一下afinal 框架的使用. Afinal 是一个android的http框架.sql ...

最新文章

  1. Python-4 两个变量相互交换
  2. 剑指offer(19): 顺时针打印矩阵
  3. linux 文件及目录结构体系
  4. CSS清除默认样式,技术详细介绍
  5. 条款2. 最好使用C++转型操作符
  6. 空值的日期类型和update 中的null
  7. python爬虫ip_python爬虫数据采集ip被封一篇解决
  8. 智能电导率系统电路设计详解
  9. 如何用公式编辑器打半中括号?
  10. ptp输出内容包含什么_PTP 无线传输
  11. 启动MyEclipse时报错,An error has occurred see the log file 出现此类错误提示
  12. Java笔试面试(社招版)
  13. 10大耗油,10大省油。
  14. 【分享】微信公众号在 “集简云平台“ 集成应用的常见问题与解决方案
  15. 实习生、应届生、三方协议、实习协议、劳动合同的区别
  16. 使用 EF Core Power Tools 和 CoreAdmin 在 5 分钟内将管理员 CRUD 网页添加到您的 ASP.NET Core Web 应用程序
  17. 滚动视差让你不相信“眼见为实”
  18. 利用 FFMPEG 批量提取指定起止时间视频片段
  19. 美国“短命”CEO排行:神人17天即遭解雇
  20. 设计模式——行为型模式之责任链模式(简简单单入门责任链,理解I/O流消息怎么逐步传递处理以及服务器框架转发)

热门文章

  1. JavaScript基础教程之querySelectorAll( )方法遇到的问题
  2. php里面smarty模板,如何在smarty模板语言中使用php代码
  3. Linux 中查找 IP 地址的方法
  4. C语言中fopen()函数的使用方法
  5. linux中扩充磁盘空间
  6. T5模型及其后续优化
  7. ADPCM WAVE文件的压缩与解压缩
  8. 轩小陌的Python笔记-day07 数据类型
  9. Spring AOP 执行流程原理
  10. 专业文件对比工具:Beyond Compare 4.2.7