用java处理图片(压缩成小尺寸;加文字和logo水印)
/***功能:压缩图片变成小尺寸***
*参数1:oImage:原图;*
*参数2:maxWidth:小尺寸宽度;*
*参数3:maxHeight:小尺寸长度;*
*参数4:newImageName:小尺寸图片存放的路径和新名字;*
*参数5:fileType:小尺寸图片类型(png,gif,jpg...)***/
private void compressImage(File oImage, int maxWidth, int maxHeight, String newImageName, String fileType) {
BufferedImage srcImage = ImageIO.read(oImage);;
int srcWidth = srcImage.getWidth(null);
int srcHeight = srcImage.getHeight(null);
if(srcWidth <= maxWidth && srcHeight <= maxHeight){
saveImage(srcImage);
return;
}
Image scaledImage = srcImage.getScaledInstance(srcWidth, srcHeight, Image.SCALE_SMOOTH);
double ratio = Math.min((double) maxWidth / srcWidth, (double) maxHeight / srcHeight);
AffineTransformOp op = new AffineTransformOp(AffineTransform.getScaleInstance(ratio, ratio), null);
scaledImage = op.filter(srcImage, null);
saveImage((BufferedImage)scaledImage, fileType, new FileOutputStream(newImageName));// 存盘
}
/***功能:图片加文字水印***
*参数1:oImage:原图;*
*参数2:newImageName:加文字水印图片存放的路径和新名字;*
*参数3:fileType:加文字水印图片类型(png,gif,jpg...);
*参数4:waterText:文字水印的内容****/
private boolean pressText(File oImage, String newImageName, String fileType, String waterText) throws IOException{
BufferedImage originalImage = ImageIO.read(oImage);
int originalWidth = originalImage.getWidth(null);
int originalHeight = originalImage.getHeight(null);
if (originalWidth < 50 || originalHeight < 50){
return false;
}
if(waterText==null || waterText.trim().equals("")){
return false;
}
BufferedImage newImage = new BufferedImage(originalWidth, originalHeight, BufferedImage.TYPE_INT_RGB);
Graphics2D g = newImage.createGraphics();
g.drawImage(originalImage, 0, 0, originalWidth, originalHeight, null);
g.setColor(Color.RED);
int fontSize = 13;
g.setFont(new Font("宋体", Font.PLAIN, fontSize));
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 0.5f));
int len = InitServlet.WATER_TEXT.length();
if(InitServlet.IS_WATER_CENTER==0){
g.drawString(InitServlet.WATER_TEXT, originalWidth-len*fontSize/2-6,originalHeight-6);
}else{
g.drawString(InitServlet.WATER_TEXT, (originalWidth-(len*fontSize))/2, (originalHeight-fontSize)/2);
}
g.dispose();
ImageIO.write(newImage, fileType, new FileOutputStream(newImageName));// 存盘
return true;
}
/***功能:图片加logo图片水印***
*参数1:oImage:原图;*
*参数2:newImageName:加logo图片水印存放的路径和新名字;*
*参数3:fileType:加logo图片水印图片类型(png,gif,jpg...);
*参数4:logoPath:logo水印图片的存放路径****/
private boolean pressImage(File oImage, String newImageName, String fileType, String logoPath) throws IOException{
File waterMarkImage = new File(logoPath);
if (!waterMarkImage.exists()) {
return false;
}
BufferedImage originalImage = ImageIO.read(oImage);
BufferedImage watermarkImage = ImageIO.read(waterMarkImage);
int originalWidth = originalImage.getWidth(null);
int originalHeight = originalImage.getHeight(null);
int watermarkWidth = watermarkImage.getWidth(null);
int watermarkHeight = watermarkImage.getHeight(null);
if (originalWidth <= watermarkWidth || originalHeight <= watermarkHeight || originalWidth < 50 || originalHeight < 50) {
return false;
}
BufferedImage newImage = new BufferedImage(originalWidth, originalHeight, BufferedImage.TYPE_INT_RGB);
Graphics2D g = newImage.createGraphics();
g.drawImage(originalImage, 0, 0, originalWidth, originalHeight, null);
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 0.5f));
if(InitServlet.IS_WATER_CENTER==0){
g.drawImage(watermarkImage, originalWidth-watermarkWidth-10, originalHeight-watermarkHeight-10, watermarkWidth, watermarkHeight, null);
}else{
g.drawImage(watermarkImage, (originalWidth-watermarkWidth)/2, (originalHeight-watermarkHeight)/2, watermarkWidth, watermarkHeight, null);
}
g.dispose();
ImageIO.write(newImage, fileType, new FileOutputStream(newImageName));// 存盘
return true;
}
转载于:https://blog.51cto.com/zhoujh/1073834
用java处理图片(压缩成小尺寸;加文字和logo水印)相关推荐
- 使用java iTest实现PDF大文件压缩——将文件过大的图片PDF文件压缩成小一些的图片PDF文件
一.需求 项目中需要将文件大小过大的PDF文件,压缩成小PDF文件.通过iText的API,可以实现此需求.在保证文件不失真的前提下,将PDF大文件压缩成小文件. 二.代码 import com.it ...
- 如何将大的视频文件压缩成小的视频文件?
如何将大的视频文件压缩成小的视频文件?视频是我们在生活中不可或缺的一部分,随着制作视频的小伙伴越来越多,大家都想把制作好的视频上传到一些平台或传给别人,有时候我们会遇到视频内存过大的问题,今天我给大家 ...
- ASP.NET(C#)图片加文字、图片水印
ASP.NET(C#)图片加文字.图片水印 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 2 ...
- Java 图片添加文字或者logo水印(附代码) | Java工具类
目录 前言 环境依赖 代码 总结 前言 本文提供java工具类,给图片添加文字或者logo图片的水印效果. 环境依赖 工具库maven依赖添加 <dependency><groupI ...
- php生成图片水印,PHP生成图片加文字及图案水印办法
工作中,各种语言都要会,但不是各种语言都记到脑子里,常常要查字典.查手册.以及百度 对于PHP生成图片加文字及图案水印这项技巧,好久没有用,又有些生疏了,现在来温故知新,加深记忆! 代码如下: //P ...
- 图片加文字(批量水印 批量水印大师)
图片加文字(批量水印 批量水印大师) 批量水印大师是一款好用的批量添加水印软件.三步操作即可轻松完成. 第一步: 添加图片 - 选择需要添加水印的图片文件. 第二步:水印设置 - 设置水印效果,所见即 ...
- 压缩pdf大小的方法?怎样压缩pdf大小?pdf文档怎么压缩?pdf文件太大怎么压缩?pdf文件太大怎么压缩成小内存?如何降低pdf文件大小?怎么把pdf文件压缩到指定大小?压缩pdf的简单方法
pdf在线压缩大小?在工作中需要处理大量PDF文件,我们通常要对PDF文件进行压缩处理.那么问题来了,PDF文件该怎么压缩呢?可能很多人都不知道具体的操作方法,今天要分享给大家的正是PDF压缩的方法, ...
- ASP.NET(C#)图片加文字、图片水印(转)
一.图片上加文字: //using System.Drawing; //using System.IO; //using System.Drawing.Imaging; pri ...
- FFMPEG 实现混音,加水印,加文字,模糊水印任意滤镜组合
一共15种组合一下搞定:先伪代码没逻辑错误,然后就撸正式代码,后面测试就有点小顺利了 伪代码: 根据参数构造ffmpeg参数命令 构造元素视频方面有水印,文字,去水印:音频方面有混音一个 构造顺序: ...
最新文章
- wxPython的简单应用
- nodejs的web开发框架了解一下
- 二进制补码求值用c语言,C语言程序设计第2章数据类型.运算符与表达式.ppt
- HDU 1426 Sudoku Killer【DFS 数独】
- 深度优化LNMP之PHP
- Mongo 常用的server命令
- 25岁,欠债47万怎么办
- AI近义词替换工具.v.1.2
- 浅谈Anchor free与Anchor based
- 我在b站上推荐一个看小电影的网站,结果被骂了
- octobercms mysql_在Ubuntu 18.04/Debian 9上安装October CMS
- idou老师教你学istio2:监控能力介绍
- Docker安装最新版MySQL5.7(mysql-5.7.40)教程(参考Docker Hub)
- 启动Selenium报错:session not created……解决方案
- Win10录屏有哪些方法?快来了解一下录屏技巧
- matlab模糊优选理论模型,模糊优选神经网络BP模型
- pytorch网络知识点四_thop计算Parameter和FLOPs,__all__的作用, GFLOPs =? GMacs
- 研究GigE Vision(未完待续)
- 流量分析“Understanding Traffic Density from Large-Scale Web Camera Data”
- 迷宫算法之递归回溯python实现
热门文章
- 安装计算机的更新每次更新失败,win7电脑自动更新失败怎么办,电脑自动更新失败解决方法...
- linux mint 安装内核,使用Ukuu在Ubuntu/Linux Mint上安装Linux Kernel 5.0的方法
- html 分页 惰性加载,懒加载实现的分页网站footer自适应
- java怎样用类模板创建对象_java入门(十四) | 面向对象(OOP)之类和对象
- react 界面渲染完成 立即执行_React原理解析fiber、diff
- 用asp.net实现日历打卡_清单 | 2021年日历请查收
- 图像局部特征(一)--概述
- pdf怎么打开上次看到的地方_ppt如何转pdf?俩种方法轻松搞定
- opencv4 图像特征匹配_openCV - 图像特征匹配
- SQL—数据模型的组成要素