aspose words做插入压缩后图片到Word文档中
最近用aspose words做导出Word的功能,发现图片的导出有点难受,一开始是这样写的
Document doc = new Document("D:\\Template.docx");
List<Map<String, Object>> dataList = new ArrayList<Map<String, Object>>();
String imagePath = "D:\\employees.jpg";
//读取一个二进制图片
FileInputStream fis = new FileInputStream(imagePath);
byte[] image = new byte[fis.available()];
fis.read(image);
fis.close();
record.put("PhotoBLOB", image); dataList.add(record);
这样写没错,就是待会会因为图片的大小而把表格撑开
就是这样,所以,我们需要把图片压缩到我们想要的结果后再导出来
String a = Global.getConfig("vfs.pr") + MapUtils.getString(map, "NEWFILESPATH");
File f = new File(a);
String newjpg = Global.getConfig("vfs.pr") + System.currentTimeMillis() + "." + f.getName().substring(f.getName().lastIndexOf(".") + 1);
FileOutputStream out = new FileOutputStream(newjpg);
thumbnail(f, out);//压缩图片的函数
out.close();
FileInputStream fileInputStream = new FileInputStream(newjpg);
byte[] image = new byte[fileInputStream.available()];
fileInputStream.read(image);
fileInputStream.close();
record.put("FILESPATH", image);
/**
* 按照固定宽高原图压缩
*
* @param img
* @param out
* @throws IOException
*/
public static void thumbnail(File img, OutputStream out) throws IOException {
BufferedImage BI = ImageIO.read(img);
int width = 95;
int height = 65;
//文件后缀名
String a = img.getName().substring(img.getName().lastIndexOf(".") + 1);
Image image = BI.getScaledInstance(width, height, Image.SCALE_SMOOTH);
BufferedImage tag = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics g = tag.getGraphics();
g.drawImage(image, 0, 0, null); // 绘制处理后的图
g.dispose();
ImageIO.write(tag, a, out);
}
这样图片就会按照95, 65的场合宽压缩出来了,不过到这里需要注意的是,在这里图片后缀是jpg压缩出来顶多一般就是失真问题,png就不一样了,是直接黑底的。
所以我需要再添加对png图片的处理
/**
* 按照固定宽高原图压缩
*
* @param img
* @param out
* @throws IOException
*/
public static void thumbnail(File img, OutputStream out) throws IOException {
BufferedImage BI = ImageIO.read(img);
int width = 95;
int height = 65;
//文件后缀名
String a = img.getName().substring(img.getName().lastIndexOf(".") + 1);
if (a.equalsIgnoreCase("jpg")) {
Image image = BI.getScaledInstance(width, height, Image.SCALE_SMOOTH);
BufferedImage tag = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics g = tag.getGraphics();
g.drawImage(image, 0, 0, null); // 绘制处理后的图
g.dispose();
ImageIO.write(tag, a, out);
}
//对png的读取压缩
else if (a.equalsIgnoreCase("png")) {
BufferedImage tag = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = tag.createGraphics();
tag = g2d.getDeviceConfiguration().createCompatibleImage(width, height, Transparency.TRANSLUCENT);
g2d.dispose();
g2d = tag.createGraphics();
Image image = BI.getScaledInstance(width, height, BI.SCALE_AREA_AVERAGING);
g2d.drawImage(image, 0, 0, null); // 绘制处理后的图
g2d.dispose();
ImageIO.write(tag, a, out);
}
}
这样就可以了
我前面有发过对aspose word导出word的简单介绍,可以结合这个和那篇一起了解。
简单介绍aspose-words-18.10-jdk16做导出word ,链接:
https://www.cnblogs.com/a874699615/p/10161842.html
csdn博客链接:
https://blog.csdn.net/qq_32003379/article/details/85255127
aspose words做插入压缩后图片到Word文档中的更多相关文章
- C# Word文档中插入、提取图片,文字替换图片
Download Files:ImageOperationsInWord.zip 简介 在这篇文章中我们可以学到在C#程序中使用一个Word文档对图像的各种操作.图像会比阅读文字更有吸引力,而且图像是 ...
- aspose.words复制插入同一word文档中的某个页面
选择word模板 Document doc = new Document(Server.MapPath("~\\templet") + "\\" + name. ...
- freemarker导出带图片的word文档
最近做一个关于文档导出功能, 顺便学习了下freemarker,做了个关于导出带图片的word文档,模板并没有写全,只是验证代码的正确性 这只是做一个小功能,故只做了后台代码关于导出的代码,并未与前台 ...
- 在word文档中如何插入Mathtype公式
将mathtype公式插入到word文档中,是mathtype公式编辑器最基本的操作.当在Mathtype数学公式编辑器中编辑好公式之后,点击文件->更新XXX文档(XXX为当前编辑的word文 ...
- PDFtoWORD_V1.1版本支持PDF文档中的文字和图片一起转化到word文档中了~
昨天菜鸟小白做了一个小软件——PDFtoWORD,作用就是将pdf文件中的文字提取出来自动转化为可编辑的word类型.但是这个软件目前也只能将文件PDF中的文字提取出来,还无法提取图片.为了 ...
- Aspose.Words:如何添加另一个WORD文档中的Node对象
原文:Aspose.Words:如何添加另一个WORD文档中的Node对象 首先看一段代码,这段代码意图从docSource中获取第一个表格,并插入docTarget的末尾: , true); doc ...
- java 在MySQL中存储文件,读取文件(包括图片,word文档,excel表格,ppt,zip文件等)
转自:https://blog.csdn.net/u014475796/article/details/49893261 在设计到数据库的开发中,难免要将图片或文档文件(如word)插入到数据库中的情 ...
- C#/VB.NET 在Word文档中插入分页符
分页符是分页的一种符号,上一页结束以及下一页开始的位置.通查用于在指定位置强制分页.本文将分为两部分来介绍如何在Word文档中插入分页符.并附上C#/VB.NET以供参考,详情请阅读以下内容. 在特定 ...
- C# 提取Word文档中的图片
C# 提取Word文档中的图片 图片和文字是word文档中两种最常见的对象,在微软word中,如果我们想要提取出一个文档内的图片,只需要右击图片选择另存为然后命名保存就可以了,今天这篇文章主要是实现使 ...
随机推荐
- 区分Web服务器、HTTP服务器、应用程序服务器
在学习前端的过程中.进程听到和看到web服务器.HTTP服务器.应用程序服务器,但一直不知道它们有什么区别,迷惑了好久,今天查看的很多博客,终于算是梳理通了,下面我就来总结一下它们的区别,顺别了解一些 ...
- 虚拟机CentOS防火墙设置
CentOS6关闭防火墙使用以下命令, 开启防火墙 systemctl start firewalld //临时关闭 # service iptables stop //禁止开机启动 # chkcon ...
- P3994 高速公路
题目链接 题意分析 这是一道树上斜率优化题 首先 \[dp[i]=min\{dp[j]+(dis[i]-dis[j])* p[i]+q[i]\}(j∈Pre_i)\] 那么就是 \[p[i]=\fra ...
- 关于window.open在不同浏览器的不同点
菜鸟教程: http://www.runoob.com/jsref/met-win-open.html 一.基本语法:window.open(URL,name,specs,replace)其中:URL ...
- java8特性之Lambda表达式
1.典型的用Lambda表达式的场景 如果有这样的一个小应用,其中的一个类Student包含姓名(name),性别(sex),分数(score),如下: package demo; public cl ...
- git 换行符替换
https://help.github.com/en/articles/dealing-with-line-endings rm .git/index git reset https://github ...
- windows下hla编译环境配置(转)
原文地址:http://blog.chinaunix.net/uid-20548989-id-1667169.html HLA简介 HLA,英文"High Level Ass ...
- python计算π及进度条显示
今天老师布置了一个课后作业,去尽可能的准确计算π的值,还要显示时间和进度条,对于python小白的我,当然是综合书上和网上的知识,自己做了一个小程序,代码如下: 一.写代码的准备工作:用pip下载第三 ...
- CDH集群安装配置(三)- 集群时间同步(主节点)和 免密码登录
集群时间同步(主节点) 1. 查看是否安装ntp服务,如果没有安装 rpm -qa |grep ntpd查看命令 yum install ntp安装命令 2. 修改配置 vi /etc/ntp.con ...
- nginx响应码
ngx.status = ngx.HTTP_CONTINUE (100) (first added in the v0.9.20 release)ngx.status = ngx.HTTP_SWITC ...