Thumbnails 是由谷歌提供的图片处理包,目前版本0.4.8。

可以简洁的实现图片的缩放、压缩、旋转、水印、格式转换等操作。

示例代码:

package test;

import net.coobird.thumbnailator.Thumbnails;
import net.coobird.thumbnailator.geometry.Coordinate;
import net.coobird.thumbnailator.geometry.Positions;
import org.junit.Test;

import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;

public class TestImageUtils {

@Test
public void testThumbnails() throws IOException {
String baseUrl = "imgurl";
String QRCodeUrl = "watermark url";

// 读入图片,输入可以是Url/InputStream/File/BufferedImage
BufferedImage qrCode = Thumbnails.of(new URL(QRCodeUrl)).size(220, 220).asBufferedImage();
Thumbnails.of(new URL(baseUrl))
.size(1080, 1372)
.watermark(new Coordinate(807, 1115), qrCode, 1.0f) //确定水印的起始位置和透明度
.watermark(Positions.BOTTOM_RIGHT, qrCode, 0.5f) //另一种确认水印位置的方式
.toFile("E:/thumbnails.jpg"); //可以输出文件或OutputStream
}
}

Thumbnails 不能添加文字,要添加文字的话需要自己另行处理。

示例代码:

package outfox.weixinactivity.weixin.utils;

import net.coobird.thumbnailator.Thumbnails;
import net.coobird.thumbnailator.geometry.Coordinate;import org.junit.Test; import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.net.URL; public class TestImage {
@Test
public void testImageText() throws IOException {
   // 载入图片、加水印
String baseUrl = "imgurl";
String QRCodeUrl = "watermark url";
ByteArrayOutputStream out = new ByteArrayOutputStream();
BufferedImage qrCode = Thumbnails.of(new URL(QRCodeUrl)).size(220, 220).asBufferedImage();
Thumbnails.of(new URL(baseUrl))
.size(1080, 1372)
.watermark(new Coordinate(807, 1115), qrCode, 1.0f)
.toOutputStream(out);
BufferedImage image = ImageIO.read(new ByteArrayInputStream(out.toByteArray())); // 填加文字
BufferedImage bi = new BufferedImage(1080, 1372, BufferedImage.TYPE_INT_RGB);
Graphics2D g = bi.createGraphics();
g.drawImage(image, 0, 0, null);
g.setFont(new Font("苹方", Font.PLAIN, 40));
g.setColor(Color.ORANGE);
g.drawString("hello!", 220, 100);
g.drawString("you", 220, 150); g.dispose();
ImageIO.write(bi, "jpg", new File("E:/testImage.jpg"));
}
}

Thumbnails 图片处理的更多相关文章

  1. 使用thumbnailator不按照比例,改变图片的大小

    我们在平时的开发中,偶尔也会遇到图片处理的问题,比如图片的压缩,按比例改变图片的大小,不按比例改变图片的大小等等. 如果要自己去开发这样一套工具,我觉得大多数人都是做不到的,所以还是学会站在巨人的肩膀 ...

  2. Linux文件系统应用---系统数据备份和迁移(用户角度)

    1   前言 首先承诺:对于从Windows系统迁移过来的用户,困扰大家的  “Linux系统下是否可以把系统文件和用户文件分开到C盘和D盘中” 的问题也可以得到完满解决. 之前的文章对Linux的文 ...

  3. Java图片处理 Thumbnails框架

    一.设置图片的缩放比例或者图片的质量比   第一步:导入maven的jar包 <dependency>     <groupId>net.coobird</groupId ...

  4. java图片压缩(Thumbnails)

    package com.hzxc.groupactivity.server.util; import java.awt.image.BufferedImage; import java.io.*; i ...

  5. wordpress插件:multiple post thumbnails(可为文章添加多个特色图片)

    我们经常会给wordpress的文章加上特色图片来实现日志缩略图的需求,但是很多时候一张图片并不能够完美而又全面的表达我们wordpress文章的内容,这时候您可能就会需要这样一个能让wordpres ...

  6. 使用Google Thumbnails 压缩图片

    背景说明:最近项目中需要用到一些图片文件的上传 ,但是有些图片很大,比如轮播图,大有的有几兆,这样加载一个首页都要很久,显然这样对用户体验是非常不友好的,对服务器资源将是一种浪费. 为了解决这个问题, ...

  7. Java使用 Thumbnails 压缩图片

    业务:用户上传一张图片到文件站,需要返回原图url和缩略图url 处理思路: 因为上传图片方法返回url是单个上传,第一步先上传原图并返回url 处理缩略图并上传:拿到MultipartFile压缩成 ...

  8. SpringMvc 使用Thumbnails压缩图片

    ```java @PostMapping(value = "/upLoadFile") @ApiOperation(value = "上传文件") public ...

  9. Atitit 动态按钮图片背景颜色与文字组合解决方案

    Atitit 动态按钮图片背景颜色与文字组合解决方案 转换背景颜色,setFont("cywe_img", fontScale, 50, 5) 设置文字大小与坐标 文字分拆,使用字 ...

随机推荐

  1. Spring AOP and AspectJ AOP 有什么区别?

    Spring AOP 基于动态代理方式实现:AspectJ 基于静态代理方式实现.Spring AOP 仅支持方法级别的 PointCut:提供了完全的 AOP 支持,它还支持属性级别的 PointC ...

  2. 规范之“用流中的Stream.Of(arr1,arr2)将两个集合合并”

    案例:用流中的Stream.Of(arr1,arr2)将两个集合合并 /** * 功能描述: * 两个对象集合添加到一起 * 在用flatMap扁平化改为Stream<User> * 这样 ...

  3. MATLAB与Carsim联合仿真时提示matlab not found的解决方法(CarSim在联合仿真时提示找不到MATLAB的解决方法)

    CarSim8.02并没有提供选择联合仿真的MATLAB/Simulink的版本的功能,CarSim总是与最后安装的MATLAB/Simulink进行联合仿真,如果安装有多个matlab版本则只打开最 ...

  4. 原生ES6写的Web游戏:ES6-Mario,小美女,小帅哥快来玩啊~~

    ? ES6-Mario 这是一个用原生ES6语法和HTML5新特性写成的Web 游戏. 通过这个项目,你可以在实践中对ES6的主要内容.HTML Canvas 相关API以及Webpack的基础配置有 ...

  5. js读取cookie 根据cookie名称获取值的方法

    //方法1 //存在问题:如果cookie中存在 aaaname=aa;name=bb 获取name的值就会出现错误function getCookie(c_name){ if (document.c ...

  6. PAT B1066图像过滤

    输入样例: 3 5 100 150 0 3 189 254 101 119 150 233 151 99 100 88 123 149 0 255   输出样例: 003 189 254 000 00 ...

  7. 自定义View的onDraw 函数不执行

    解决办法:    在自定义的View 的构造方法中添加一句话:   this.setWillNotDraw(false);解释:那么加这条语句的作用是什么?先看API:        If this ...

  8. EMS监控用户邮箱

    案例任务:部署日记规则,用户"王淑江"监控用户"王春海"的邮箱. 1.EMS监控用户邮箱 使用PowerShell命令完成任务:使用日记规则部署"王淑 ...

  9. openlayer路线箭头

    // 用于设置线串所在的矢量图层样式的函数 var styleFunction = function(feature,res){ //轨迹线图形 var trackLine= feature.getG ...

  10. 关于页面中css某些情况下出现不知原因的隔断解决办法

    第一种方法:body{margin:0px;padding:0px position:absolute; top:0px;left:0px;} html{ width:100%; overflow-x ...