Java图片处理开源框架Thumbnailator

图片处理是当今软件开发中非常重要的一环,然而处理图片的开源框架却并不多。现金网上流传的Java处理图片的代码,虽然可对图片进行简单处理,但效果并不理想。虽然也有些其他解决方案,但都摆脱不了繁琐,使用起来十分不方便。
为了解决这个问题,我也是在网上找了好久,看了很多资料,功夫不负有心人,最终找到了一个处理图片十分棒的开源框架。特此拿出来与大家分享。

Thumbnailator 是一个优秀的图片处理的Google开源Java类库。处理效果远比Java API的好。从API提供现有的图像文件和图像对象的类中简化了处理过程,两三行代码就能够从现有图片生成处理后的图片,且允许微调图片的生成方式,同时保持了需要写入的最低限度的代码量。还支持对一个目录的所有图片进行批量处理操作。
支持的处理操作:图片缩放,区域裁剪,水印,旋转,保持比例。

另外值得一提的是,Thumbnailator至今仍不断更新,怎么样,感觉很有保障吧!

下面我们介绍下如何使用Thumbnailator

原图:

1、指定大小进行缩放

//size(宽度, 高度) 

/*
 * 若图片横比200小,高比300小,不变
 * 若图片横比200小,高比300大,高缩小到300,图片比例不变
 * 若图片横比200大,高比300小,横缩小到200,图片比例不变
 * 若图片横比200大,高比300大,图片按比例缩小,横为200或高为300
 */
Thumbnails.of("images/a380_1280x1024.jpg")
  .size(200, 300)
  .toFile("c:/a380_200x300.jpg"); 

Thumbnails.of("images/a380_1280x1024.jpg")
  .size(2560, 2048)
  .toFile("c:/a380_2560x2048.jpg");

2、按照比例进行缩放

//scale(比例)
Thumbnails.of("images/a380_1280x1024.jpg")
  .scale(0.25f)
  .toFile("c:/a380_25%.jpg"); 

Thumbnails.of("images/a380_1280x1024.jpg")
  .scale(1.10f)
  .toFile("c:/a380_110%.jpg");

3、不按照比例,指定大小进行缩放

//keepAspectRatio(false)默认是按照比例缩放的
Thumbnails.of("images/a380_1280x1024.jpg")
  .size(200,200)
  .keepAspectRatio(false)
  .toFile("c:/a380_200x200.jpg");

4、旋转

//rotate(角度),正数:顺时针负数:逆时针
Thumbnails.of("images/a380_1280x1024.jpg")
  .size(1280,1024)
  .rotate(90)
  .toFile("c:/a380_rotate+90.jpg"); 

Thumbnails.of("images/a380_1280x1024.jpg")
  .size(1280,1024)
  .rotate(-90)
  .toFile("c:/a380_rotate-90.jpg");

5、水印

//watermark(位置,水印图,透明度)
Thumbnails.of("images/a380_1280x1024.jpg")
  .size(1280,1024)
  .watermark(Positions.BOTTOM_RIGHT,ImageIO.read(newFile("images/watermark.png")),0.5f)
  .outputQuality(0.8f)
  .toFile("c:/a380_watermark_bottom_right.jpg"); 

Thumbnails.of("images/a380_1280x1024.jpg")
  .size(1280,1024)
  .watermark(Positions.CENTER,ImageIO.read(newFile("images/watermark.png")),0.5f)
  .outputQuality(0.8f)
  .toFile("c:/a380_watermark_center.jpg");

6、裁剪

//sourceRegion() 

//图片中心400*400的区域
Thumbnails.of("images/a380_1280x1024.jpg")
  .sourceRegion(Positions.CENTER,400,400)
  .size(200,200)
  .keepAspectRatio(false)
  .toFile("c:/a380_region_center.jpg"); 

//图片右下400*400的区域
Thumbnails.of("images/a380_1280x1024.jpg")
  .sourceRegion(Positions.BOTTOM_RIGHT,400,400)
  .size(200,200)
  .keepAspectRatio(false)
  .toFile("c:/a380_region_bootom_right.jpg"); 

//指定坐标
Thumbnails.of("images/a380_1280x1024.jpg")
  .sourceRegion(600,500,400,400)
  .size(200,200)
  .keepAspectRatio(false)
  .toFile("c:/a380_region_coord.jpg");

7、转化图像格式

//outputFormat(图像格式)
Thumbnails.of("images/a380_1280x1024.jpg")
  .size(1280,1024)
  .outputFormat("png")
  .toFile("c:/a380_1280x1024.png"); 

Thumbnails.of("images/a380_1280x1024.jpg")
  .size(1280,1024)
  .outputFormat("gif")
  .toFile("c:/a380_1280x1024.gif");

 8、输出到OutputStream

//toOutputStream(流对象)
OutputStreamos=newFileOutputStream("c:/a380_1280x1024_OutputStream.png");
Thumbnails.of("images/a380_1280x1024.jpg")
  .size(1280,1024)
  .toOutputStream(os);

9、输出到BufferedImage

//asBufferedImage()返回BufferedImage
BufferedImagethumbnail=Thumbnails.of("images/a380_1280x1024.jpg")
  .size(1280,1024)
  .asBufferedImage();
ImageIO.write(thumbnail,"jpg",newFile("c:/a380_1280x1024_BufferedImage.jpg"));

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 利用Thumbnailator轻松实现图片缩放、旋转与加水印

    概述 Thumbnailator 是一个开源的 Java 项目,它提供了非常简单的 API 来对图片进行缩放.旋转以及加水印的处理. 有多简单呢?简单到一行代码就可以完成图片处理.形式如下: Thumbnails.of(new File("path/to/directory").listFiles()) .size(640, 480) .outputFormat("jpg") .toFiles(Rename.PREFIX_DOT_THUMBNAIL); 当然,Thu

  • Java缩略图生成库之Thumbnailator应用说明

    Thumbnailator 是一个为Java界面更流畅的缩略图生成库.从API提供现有的图像文件和图像对象的缩略图中简化了缩略过程,两三行代码就能够从现有图片生成缩略图,且允许微调缩略图生成,同时保持了需要写入到最低限度的代码量.同时还支持根据一个目录批量生成缩略图. 版本:thumbnailator-0.4.2.jar 原图如下: 1.指定大小进行缩放 复制代码 代码如下: //size(宽度, 高度) /* * 若图片横比200小,高比300小,不变 * 若图片横比200小,高比300大,高

  • Java图片处理开源框架Thumbnailator

    图片处理是当今软件开发中非常重要的一环,然而处理图片的开源框架却并不多.现金网上流传的Java处理图片的代码,虽然可对图片进行简单处理,但效果并不理想.虽然也有些其他解决方案,但都摆脱不了繁琐,使用起来十分不方便. 为了解决这个问题,我也是在网上找了好久,看了很多资料,功夫不负有心人,最终找到了一个处理图片十分棒的开源框架.特此拿出来与大家分享. Thumbnailator 是一个优秀的图片处理的Google开源Java类库.处理效果远比Java API的好.从API提供现有的图像文件和图像对象

  • Android使用开源框架ANDROID-IMAGE-INDICATOR实现图片轮播部署

    之前的博文中有介绍关于图片轮播的实现方式,分别为(含超链接): 1.<Android中使用ViewFlipper实现屏幕切换> 2.<Android中使用ViewPager实现屏幕页面切换和页面轮播效果> 3.<Android中使用ImageViewSwitcher实现图片切换轮播导航效果> 今天通过使用GitHub中的开源项目android-image-indicator来简单实现APP自带图片的轮播以及加载网络图片进行轮播. 一.从GitHub上下载项目 GitHu

  • 如何使用Java给您的图片瘦身之Thumbnailator技术

    目录 前言 一.Thumbnailator概况 1.Thumbnailator是什么? 2.Thumbnailator能做什么? 3.Thumbnailator 的github地址 二.Thumbnailator具体使用步骤 1.使用Maven构建,在Pom.xml中引入相关资源 2.创建一个指定高为160和宽为160的缩略图 3.按比例缩放 4.按照图片质量裁剪 4.旋转和添加水印效果 三.总结 前言 在我们的日常企业应用开发当中,会碰到很多的图片素材访问的场景.比如社交类应用,您会在朋友圈中

  • Java应用开源框架实现简易web搜索引擎

    引言 应用 Java 的开源库,编写一个搜索引擎,这个引擎能爬取一个网站的内容.并根据网页内容进行深度爬取,获取所有相关的网页地址和内容,用户可以通过关键词,搜索所有相关的网址. 具体功能 (1) 用户可以指定爬取一个url对应的网页的内容. (2) 对网页内容进行解析,并获取其中所有的url链接地址. (3) 用户可以设定爬取深度,代表着从初始url对应的页面开始,可以爬取其中所有的url对应的网页内的url,以此类推.深度越大,能爬取到的网站越多. (4) 对爬取到的url内容进行保存.建立

  • Java WebService开源框架CXF详解

    CXF简介 CXF是一个开源的WebService框架.Apache CXF = Celtix + XFire,开始叫 Apache CeltiXfire,后来更名为 Apache CXF 了,以下简称为 CXF.CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且提供了多种 Binding .DataBinding.Transport 以及各种 Format 的支持,并且可以根据实际项目的需要,采用代码优先(Code First)或者 WS

  • Java WebService开源框架CXF详解

    目录 CXF简介 支持多种标准 CXF入门案例 服务端的实现 客户端的实现 CXF+Spring整合发布SOAP模式的服务 服务端的实现 客户端的实现 CXF发布REST模式的服务 CXF+Spring整合发布REST模式的服务 综合案例:手机归属地查询 CXF简介 CXF是一个开源的WebService框架.Apache CXF = Celtix + XFire,开始叫 Apache CeltiXfire,后来更名为 Apache CXF 了,以下简称为 CXF.CXF 继承了 Celtix

  • Android引用开源框架通过AsyncHttpClient实现文件上传

    引用开源框架通过AsyncHttpClient进行文件上传,具体内容如下 一.步骤: 1.添加权限(访问网络权限和读写权限) 2.获取上传文件路径并判断是否为空 3.若不为空,创建异步请求对象 4.创建上传文件路径 5.执行post请求(指定url路径,封装上传参数,新建AsyncHttpResponseHandler方法) 二.查看参考文档  三.实例项目解析 运行效果如下: 在本地文件夹中查看是否获取到图片,如下图显示 重点代码:均有详细解析,请认真查看注释 1.在AndroidManife

  • 六款值得推荐的android(安卓)开源框架简介

    1.volley 项目地址 https://github.com/smanikandan14/Volley-demo (1)  JSON,图像等的异步下载: (2)  网络请求的排序(scheduling) (3)  网络请求的优先级处理 (4)  缓存 (5)  多级别取消请求 (6)  和Activity和生命周期的联动(Activity结束时同时取消所有网络请求) 2.android-async-http 项目地址:https://github.com/loopj/android-asyn

  • 3款值得推荐的微信开发开源框架

    微信(英文名:wechat)是腾讯公司于2011年1月21日推出的一个为智能终端提供即时通讯服务的免费应用程序,微信支持跨通信运营商.跨操作系统平台通过网络快速发送免费(需消耗少量网络流量)语音短信.视频.图片和文字,同时,也可以使用通过共享流媒体内容的资料和基于位置的社交插件"摇一摇"."漂流瓶"."朋友圈"."公众平台"."语音记事本"等服务插件. 微信提供公众平台.朋友圈.消息推送等功能,用户可以通过

  • Android图片加载框架Glide的基本用法介绍

    简介 Glide是一款图片加载框架,可以在Android平台上以简单的方式加载和展示图片. dependencies { compile 'com.github.bumptech.glide:glide:3.7.0' } 在清单文件中加入权限 <uses-permission android:name="android.permission.INTERNET" /> 加载图片 http://sc.jb51.net/uploads/allimg/150709/14-150FZ

随机推荐