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"";
     }
目录
相关文章
|
17天前
|
安全 Java API
JAVA并发编程JUC包之CAS原理
在JDK 1.5之后,Java API引入了`java.util.concurrent`包(简称JUC包),提供了多种并发工具类,如原子类`AtomicXX`、线程池`Executors`、信号量`Semaphore`、阻塞队列等。这些工具类简化了并发编程的复杂度。原子类`Atomic`尤其重要,它提供了线程安全的变量更新方法,支持整型、长整型、布尔型、数组及对象属性的原子修改。结合`volatile`关键字,可以实现多线程环境下共享变量的安全修改。
|
2月前
|
安全 Java 调度
解锁Java并发编程高阶技能:深入剖析无锁CAS机制、揭秘魔法类Unsafe、精通原子包Atomic,打造高效并发应用
【8月更文挑战第4天】在Java并发编程中,无锁编程以高性能和低延迟应对高并发挑战。核心在于无锁CAS(Compare-And-Swap)机制,它基于硬件支持,确保原子性更新;Unsafe类提供底层内存操作,实现CAS;原子包java.util.concurrent.atomic封装了CAS操作,简化并发编程。通过`AtomicInteger`示例,展现了线程安全的自增操作,突显了这些技术在构建高效并发程序中的关键作用。
59 1
|
5天前
|
Java API 数据处理
Java 包(package)的作用详解
在 Java 中,包(package)用于组织和管理类与接口,具有多项关键作用:1)系统化组织代码,便于理解和维护;2)提供命名空间,避免类名冲突;3)支持访问控制,如 public、protected、默认和 private,增强封装性;4)提升代码可维护性,实现模块化开发;5)简化导入机制,使代码更简洁;6)促进模块化编程,提高代码重用率;7)管理第三方库,避免命名冲突;8)支持 API 设计,便于功能调用;9)配合自动化构建工具,优化项目管理;10)促进团队协作,明确模块归属。合理运用包能显著提升代码质量和开发效率。
|
5天前
|
Java 数据安全/隐私保护
Java 包(package)的使用详解
Java中的包(`package`)用于组织类和接口,避免类名冲突并控制访问权限,提升代码的可维护性和可重用性。通过`package`关键字定义包,创建相应目录结构即可实现。包可通过`import`语句导入,支持导入具体类或整个包。Java提供多种访问权限修饰符(`public`、`protected`、`default`、`private`),以及丰富的标准库包(如`java.lang`、`java.util`等)。合理的包命名和使用对大型项目的开发至关重要。
|
8天前
|
Java
Java-FileInputStream和FileOutputStream的使用,txt文件及图片文件的拷贝
这篇文章介绍了Java中FileInputStream和FileOutputStream的使用,包括如何读取和写入txt文件以及如何拷贝图片文件。
Java-FileInputStream和FileOutputStream的使用,txt文件及图片文件的拷贝
|
11天前
|
存储 缓存 监控
Java——图片文件位于 bin 目录下,下载新图片会导致应用程序重启
【9月更文挑战第22天】在Java应用中,若图片位于bin目录下且下载新图片导致应用重启,可能是因为部署方式不当或资源监控机制过于敏感。解决方法包括:更改图片存储位置至独立目录;配置应用服务器减少资源监控敏感度;使用独立资源服务器托管静态资源;优化代码减少资源重复加载。具体方案需根据应用实际情况和技术栈调整。
|
2月前
|
Java
Java系列之 重命名文件/图片,renameTo() 方法的使用
这篇文章介绍了Java中File类的renameTo()方法,包括其使用方式、参数、返回值以及一些使用时的注意事项,并通过示例代码演示了如何使用该方法来重命名文件。
Java系列之 重命名文件/图片,renameTo() 方法的使用
|
1月前
|
数据采集 存储 前端开发
Java爬虫开发:Jsoup库在图片URL提取中的实战应用
Java爬虫开发:Jsoup库在图片URL提取中的实战应用
|
2月前
|
Java Maven 数据库
Java 包(package)
Java 包(package)
31 1
|
2月前
|
Java
Java应用结构规范问题之在biz层的convert包实现转换的问题如何解决
Java应用结构规范问题之在biz层的convert包实现转换的问题如何解决
下一篇
无影云桌面