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"";
     }
目录
相关文章
|
3月前
|
Java
Java开发实现图片URL地址检验,如何编码?
【10月更文挑战第14天】Java开发实现图片URL地址检验,如何编码?
101 4
|
3月前
|
Java
Java开发实现图片地址检验,如果无法找到资源则使用默认图片,如何编码?
【10月更文挑战第14天】Java开发实现图片地址检验,如果无法找到资源则使用默认图片,如何编码?
72 2
|
4月前
|
安全 Java API
JAVA并发编程JUC包之CAS原理
在JDK 1.5之后,Java API引入了`java.util.concurrent`包(简称JUC包),提供了多种并发工具类,如原子类`AtomicXX`、线程池`Executors`、信号量`Semaphore`、阻塞队列等。这些工具类简化了并发编程的复杂度。原子类`Atomic`尤其重要,它提供了线程安全的变量更新方法,支持整型、长整型、布尔型、数组及对象属性的原子修改。结合`volatile`关键字,可以实现多线程环境下共享变量的安全修改。
|
2月前
|
Java Android开发
Eclipse 创建 Java 包
Eclipse 创建 Java 包
33 1
|
3月前
|
算法 Java Linux
java制作海报二:java使用Graphics2D 在图片上合成另一个照片,并将照片切割成头像,头像切割成圆形方法详解
这篇文章介绍了如何使用Java的Graphics2D类在图片上合成另一个照片,并将照片切割成圆形头像的方法。
60 1
java制作海报二:java使用Graphics2D 在图片上合成另一个照片,并将照片切割成头像,头像切割成圆形方法详解
|
3月前
|
JSON Java 开发工具
Java服务端集成Google FCM推送的注意事项和实际经验
本文分享了作者在公司APP海外发布过程中,选择Google FCM进行消息推送的集成经验。文章详细解析了Java集成FCM推送的多种实现方式,包括HTTP请求和SDK集成,并指出了通知栏消息和透传消息的区别与应用场景。同时,作者还探讨了Firebase项目的创建、配置和服务端集成的注意事项,帮助读者解决文档混乱和选择困难的问题。
122 1
|
3月前
|
Java 数据安全/隐私保护
Java ffmpeg 实现视频加文字/图片水印功能
【10月更文挑战第22天】在 Java 中使用 FFmpeg 实现视频加文字或图片水印功能,需先安装 FFmpeg 并添加依赖(如 JavaCV)。通过构建 FFmpeg 命令行参数,使用 `drawtext` 滤镜添加文字水印,或使用 `overlay` 滤镜添加图片水印。示例代码展示了如何使用 JavaCV 实现文字水印。
200 1
|
3月前
|
Java Apache Maven
Java/Spring项目的包开头为什么是com?
本文介绍了 Maven 项目的初始结构,并详细解释了 Java 包命名惯例中的域名反转规则。通过域名反转(如 `com.example`),可以确保包名的唯一性,避免命名冲突,提高代码的可读性和逻辑分层。文章还讨论了域名反转的好处,包括避免命名冲突、全球唯一性、提高代码可读性和逻辑分层。最后,作者提出了一个关于包名的问题,引发读者思考。
108 0
Java/Spring项目的包开头为什么是com?
|
3月前
|
前端开发 小程序 Java
java基础:map遍历使用;java使用 Patten 和Matches 进行正则匹配;后端传到前端展示图片三种情况,并保存到手机
这篇文章介绍了Java中Map的遍历方法、使用Pattern和matches进行正则表达式匹配,以及后端向前端传输图片并保存到手机的三种情况。
31 1
|
3月前
|
算法 Java Linux
java制作海报四:java BufferedImage 转 InputStream 上传至OSS。png 图片合成到模板(另一个图片)上时,透明部分变成了黑色
这篇文章主要介绍了如何将Java中的BufferedImage对象转换为InputStream以上传至OSS,并解决了png图片合成时透明部分变黑的问题。
129 1