maven坐标:
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.8</version>
</dependency>
相关代码:
package own.Java;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import net.coobird.thumbnailator.Thumbnails;
import net.coobird.thumbnailator.geometry.Positions;
public class ThumbTest {
/**
* 指定尺寸缩放图片(遵循比例)
* @param fromPic 原图片
* @param toPic 新图片
* @param width 新图片宽度
* @param height 新图片高度
* @throws IOException
* 特点:会按照入参中的宽度和高度较小的值进行等比例缩放
*/
public static void overRidePicSize(File fromPic,File toPic,int width,int height) throws IOException {
Thumbnails.of(fromPic).size(width, height).toFile(toPic);
}
/**
* 按比例缩小图片
* @param fromPic 原图片
* @param toPic 新图片
* @param size 缩小放大比例
* @throws IOException
*/
public static void overRidePicSize2(File fromPic,File toPic,double size) throws IOException {
Thumbnails.of(fromPic).scale(size).toFile(toPic);
}
/**
* 指定宽高非等比缩放
* @param fromPic 源文件
* @param toPic 指定存储文件
* @param width 文件尺寸
* @param height 文件尺寸
* @throws IOException
*/
public static void overRidePicSize3(File fromPic,File toPic,int width,int height) throws IOException {
Thumbnails.of(fromPic).size(width,height).keepAspectRatio(false).toFile(toPic);
}
/**
* 旋转图片
* @param fromPic 源文件
* @param toPic 存储文件
* @param width 指定存储文件尺寸
* @param height 指定存储文件尺寸
* @param rotate 指定旋转角度
* @throws IOException
*/
public static void rotatePic(File fromPic,File toPic,int width,int height,int rotate) throws IOException {
Thumbnails.of(fromPic).size(width, height).rotate(rotate).toFile(toPic);
}
/**
* 图片尺寸不变,压缩图片文件大小
* @param fromPic 源文件
* @param toPic 指定存储文件
* @param size 指定文件尺寸缩放比例
* @param qualitySize 指定文件占用磁盘空间大小缩放比例
* @throws IOException
*/
public static void picByteToSmall(File fromPic,File toPic,float size,double qualitySize) throws IOException {
Thumbnails.of(fromPic).scale(size).outputQuality(qualitySize).toFile(toPic);
}
/**
* 给图片添加水印
* @param fromPic 源文件
* @param toPic 指定存储文件
* @param waterPic 水印文件
* @param left 指定图片尺寸
* @param top 指定图片尺寸
* @param size 指定图片缩放比例
* @param qualitySize 指定文件大小缩放比例
* @throws IOException
*/
public static void waterMark(File fromPic,File toPic,File waterPic,int left,int top,float size,double qualitySize) throws IOException {
Thumbnails.of(fromPic)
.size(left, top)
.watermark(Positions.CENTER,ImageIO.read(waterPic),size)
.outputQuality(qualitySize)
.toFile(toPic);
}
/**
* 图片裁剪(中间位置)
* @param fromPic 源文件
* @param toPic 指定存储文件
* @param left 裁剪位置
* @param top 裁剪位置
* @param width 生成文件尺寸
* @param height 生成文件尺寸
* @throws IOException
*/
public static void picCutCenter(File fromPic,File toPic,int cutWidth,int cutHeight,int width,int height) throws IOException {
Thumbnails.of(fromPic).sourceRegion(Positions.CENTER, cutWidth, cutHeight)
.size(width, height)
.toFile(toPic);
}
/**
* 图片裁剪(中上区域)
* @param fromPic 源文件
* @param toPic 指定生成文件
* @param left 裁剪位置
* @param top 裁剪位置
* @param width 生成文件尺寸
* @param height 生成文件尺寸
* @throws IOException
*/
public static void picCutTopCenter(File fromPic,File toPic,int cutWidth,int cutHeight,int width,int height) throws IOException {
Thumbnails.of(fromPic).sourceRegion(Positions.TOP_CENTER,cutWidth,cutHeight)
.size(width, height)
.toFile(toPic);
}
/**
* 默认裁剪方法
* @param fromPic 源文件
* @param toPic 指定接收文件
* @param left 裁剪位置左
* @param top 裁剪位置
* @param cutWidth 裁剪尺寸
* @param cutHeight 裁剪尺寸
* @param width 指定生成文件的尺寸
* @param height 指定生成文件的尺寸
* @throws IOException
*/
public static void picCutDefault(
File fromPic,File toPic,int left,int top,int cutWidth,
int cutHeight,int width,int height) throws IOException {
Thumbnails.of(fromPic).sourceRegion(left,top,cutWidth,cutHeight)
.size(width, height)
.toFile(toPic);
}
/**
* 图片转换格式
* @param fromPic 源文件
* @param toPic 存储文件
* @param size 指定尺寸
* @param msg 转换文件格式后缀
* @param picName 文件名称
* @throws IOException
*/
public static void picFormat(File fromPic,float size,String msg,String picName) throws IOException {
Thumbnails.of(fromPic).scale(1f).outputFormat(msg).toFile(picName+"."+msg);
}
public static void main(String[] args) throws IOException {
File fromPic = new File("D:\\EclipseIndigo\\Java\\src\\main\\java\\own\\Java\\test.jpg");
File toPic = new File("D:\\EclipseIndigo\\Java\\src\\main\\java\\own\\Java\\结果.jpg");
File waterPic = new File("D:\\EclipseIndigo\\Java\\src\\main\\java\\own\\Java\\fu.jpg");
//overRidePicSize(fromPic, toPic, 1300,900);
//overRidePicSize2(fromPic, toPic, 0.9);
//overRidePicSize3(fromPic, toPic, 900,600);
//rotatePic(fromPic, toPic, 900,600,90);
//picByteToSmall(fromPic,toPic,1f,0.25);
waterMark(fromPic,toPic,waterPic,600,600,0.25f,1.00);
//picCutTopCenter(fromPic,toPic,200,200,800,800);
//picCutDefault(fromPic, toPic, 220, 220, 200, 200, 500, 500);
//picFormat(fromPic,1f,"png","geshi");
}
}