现在很多网站上,都有上传图片这个功能,而图片对于现在的很多手机来说,拍摄出来的都是高清图片,分辨率也很高,当然占用的存储空间也就大了。问题也就产生了,你每个用户都上传个3M的图片怎么办?
用户如果加载你的网页加载个半天,就是因为图片太大导致的那就不是钱能解决的问题了。
因为用户的网络环境你是不可控制的。所以本章我们添加图片压缩,添加水印,格式转换等功能。
一:添加thumbnailator依赖
dependency groupIdnet.coobird/groupId
artifactIdthumbnailator/artifactId
version./version
/dependency
二:创建图片处理类
创建core→utils→ImageUtils.java
package com.example.demo.core.utils net.coobird.thumbnailator.Thumbnails
net.coobird.thumbnailator.geometry.Positions
net.coobird.thumbnailator.name.Rename
net.coobird.thumbnailator.resizers.configurations.ScalingMode
org.slf4j.Logger
org.slf4j.LoggerFactory
javax.imageio.ImageIO
java.io.File
java.io.FileOutputStream
java.io.IOException
java.io.OutputStream
/**
* 图片处理工具类,主要压缩,添加logo等
* @author phubing
*/
public class ImageUtils
public static Logger logger LoggerFactory.getLoggerImageUtils.class
public static void mainString args
//使用给定的图片生成指定大小的图片
//generateFixedSizeImage
//对原图加水印,然后顺时针旋转90度,最后压缩为80%保存
//generateRotationWatermark
//转换图片格式,将流写入到输出流
//generateOutputstream
//按比例缩放图片
//generateScale
//生成缩略图到指定的目录
//generateThumbnail2Directory
//将指定目录下所有图片生成缩略图
//generateDirectoryThumbnail
/**
* 使用给定的图片生成指定大小的图片
*/
public static void
try
Thumbnails.of.size.toFile
catch IOException e
logger.errore.getMessage
/**
* 对原图加水印,然后顺时针旋转90度,最后压缩为80%保存
*/
public static void
try
Thumbnails.of.
// 缩放大小
size.
// 顺时针旋转90度
rotate.
//水印位于右下角,半透明
watermarkPositions.BOTTOM_RIGHT, ImageIO.readnew File,1f.
// 图片压缩80%质量
outputQuality.
toFile
catch IOException e
logger.errore.getMessage
/**
* 转换图片格式,将流写入到输出流
*/
public static void
tryOutputStream outputStream new FileOutputStream
Thumbnails.of.
size.
// 转换格式
outputFormat.
// 写入输出流
toOutputStreamoutputStream
catch IOException e
logger.errore.getMessage
/**
* 按比例缩放图片
*/
public static void
try
Thumbnails.of.
scalingMode
ScalingMode.BICUBIC.
// 图片缩放80%, 不能和size一起使用
scale.
// 图片质量压缩80%
outputQuality.
toFile
catch IOException e
logger.errore.getMessage
/**
* 生成缩略图到指定的目录
*/
public static void
try
Thumbnails.of,.
// 图片缩放80%, 不能和size一起使用
scale.
//指定的目录一定要存在,否则报错
toFilesnew File, Rename.NO_CHANGE
catch IOException e
logger.errore.getMessage
/**
* 将指定目录下所有图片生成缩略图
*/
public static void
try
Thumbnails.of
new File.listFiles.
scale.
toFilesnew File, Rename.SUFFIX_HYPHEN_THUMBNAIL
catch IOException e
logger.errore.getMessage
三:基本使用方法介绍
Thumbnails.of //生成图片大小
.size
//缩放比例 -1之间
.scale1f
//图片质量 -1之间 最好
.outputQuality.5f
//顺时针旋转度数
.rotate
//水印 第一个参数:水印位置 第二个:水印所在路径 第三个:水印透明度
.watermarkPositions.BOTTOM_RIGHT, ImageIO.readnew File,1f.
.toFile
四:文档地址
具体示例大家可自行查看
帮助文档
还没有评论,来说两句吧...