java 操作图片, google图片工具包Thumbnails

简介: java 操作图片, google图片工具包Thumbnails

1、依赖

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

2、api解释

Thumbnails.of(args)args支持参数为:File对象:BufferedImage对象:InputStream流对象:String对象():URL对象操作远程?newFile("D:\\pics").listFiles() 文件夹批量操作Thumbnails.of("").scale(arg0)  arg0参数为一个double类型的参数:代表宽高都是按照相同的比例进行缩放;Thumbnails.of("").scale(arg0,arg1)  两个参数的话。两个参数都是double类型。代表的压缩比例按照:宽(arg0)和高(arg1)进行压缩。Thumbnails.of("").scale(1f)  代表图片的尺寸不变当arg0大于1的时候就是变大,小于1的时候就是缩小缩放的时候回遵守原图的高宽比例Thumbnails.of("").scale(1f).outputQuality(0.25f  :表示图片的尺寸不变,压缩图片文件的大小。outputQuality(arg0)的arg0的参数值为:0~11为最高质量watermark()为添加水印.rotate(arg0) 为旋转图片sourceRegion(arg0)为剪裁图片最后操作完之后将图片输出to*(arg0)  表示将图片输出成什么格式的toFile(File)  输出File文件toFile(String);  输出路径当然可以支持批量操作:toFile(arg0) 
toOutputStream(OutPutStream); 输出批量操作:toOutputStreams();

3、demo:

/**** base64 转成 file* 会在本地生成 一个 文件 * 不建议使用** @param base64* @return* @throws Base64DecodingException*/publicstaticFilebase64ToFile(Stringbase64) throwsBase64DecodingException {
if(base64==null||"".equals(base64)) {
returnnull;
        }
byte[] buff=Base64.decode(base64);
Filefile=null;
FileOutputStreamfout=null;
try {
file=File.createTempFile("tmp", null);
fout=newFileOutputStream(file);
fout.write(buff);
        } catch (IOExceptione) {
e.printStackTrace();
        }finally {
if(fout!=null) {
try {
fout.close();
                } catch (IOExceptione) {
e.printStackTrace();
                }
            }
        }
returnfile;
    }
/**** File  转base64** @param file* @return*/publicstaticStringfile2Base64(Filefile) {
if(file==null) {
returnnull;
        }
Stringbase64=null;
FileInputStreamfin=null;
try {
fin=newFileInputStream(file);
byte[] buff=newbyte[fin.available()];
fin.read(buff);
base64=Base64.encode(buff);
        } catch (FileNotFoundExceptione) {
e.printStackTrace();
        } catch (IOExceptione) {
e.printStackTrace();
        } finally {
if (fin!=null) {
try {
fin.close();
                } catch (IOExceptione) {
e.printStackTrace();
                }
            }
        }
returnbase64;
    }
/**** base64转流** @param base64string* @return*/publicstaticInputStreamBaseToInputStream(Stringbase64string) {
ByteArrayInputStreamstream=null;
try {
BASE64Decoderdecoder=newBASE64Decoder(); 
//byte[] decode = Base64.decode(base64string);//同理?byte[] bytes1=decoder.decodeBuffer(base64string);//将base64转成 byte 数组  而后 byte数组可以转成 流stream=newByteArrayInputStream(bytes1);
          } catch (Exceptione) {
e.printStackTrace();
          }
returnstream;
     }
/**** 使用 jar 类库 操作 图片** 谷歌 插件 配置 Thumbnails** 传入 base64  返回base64* @return*/publicstaticStringThumbnailsOperateImage(Stringbase64){
try {
InputStreambis=BaseToInputStream(base64);//转流ByteArrayOutputStreambao=newByteArrayOutputStream();//用来 接 操作完成的流Thumbnails.of(bis).size(400, 800).toOutputStream(bao);
byte[] bar=bao.toByteArray();//转数组Stringstr=Base64.encode(bar);//转base64returnstr;
          } catch (IOExceptione) {
e.printStackTrace();
          }
return"";
     }
目录
相关文章
|
6天前
|
存储 Java
java用modbus4j的RTU去操作那些寄存器(线圈,保持,输入,离散输入寄存器)
java用modbus4j的RTU去操作那些寄存器(线圈,保持,输入,离散输入寄存器)
26 0
|
1天前
|
Java API 开发者
Java中的文件I/O操作详解
Java中的文件I/O操作详解
|
1天前
|
Java BI 数据处理
如何在Java中实现Excel操作
如何在Java中实现Excel操作
|
8天前
|
并行计算 Java 调度
深入理解Java并发工具包中的CyclicBarrier
深入理解Java并发工具包中的CyclicBarrier
|
8天前
|
Java
使用kafka-clients操作数据(java)
使用kafka-clients操作数据(java)
14 6
|
2天前
|
存储 缓存 安全
Java List操作详解及常用方法
Java List操作详解及常用方法
|
3天前
|
Java API 开发者
Java中不同I/O操作的性能比较
Java中不同I/O操作的性能比较
|
4天前
|
Java
用java 将 jb2 文件转图片的方法
用java 将 jb2 文件转图片的方法
|
6天前
|
存储 缓存 安全
Java List操作详解及常用方法
Java List操作详解及常用方法
|
8天前
|
Java Maven
java运行jar包提示 “XXX中没有主清单属性”,配置maven插件
java运行jar包提示 “XXX中没有主清单属性”,配置maven插件
15 0