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中,如果我们想要提取出一个文档内的图片,只需要右击图片选择另存为然后命名保存就可以了,今天这篇文章主要是实现使 ...
随机推荐
- TCP/IP学习笔记(3)-IP、ARP、RARP协议
这三个协议放到一起学习是因为这三个协议处于同一层,ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数据 ...
- python基础,变量,if语句
一.python初识 python是一门 解释型弱类型编程语言. 特点: 简单.明确.优雅 二.python的解释器 CPython. 官方提供的. 内部使用c语言来实现 PyPy. 一次性把我们的 ...
- mysql主从同步错误,提示The server quit without updating PID file
在安装完lnmp后,启动mysqld失败,提示 [root@centos-6 ~]# service mysqld start Starting MySQL [确定][root@centos-6 ~] ...
- Squid代理服务器(三)——ACL访问控制
一.ACL概念 Squid提供了强大的代理控制机制,通过合理设置ACL(Access Control List,访问控制列表)并进行限制,可以针对源地址.目标地址.访问的URL路径.访问的时间等各种条 ...
- 使用ceph-deploy进行ceph安装
ceph安装包介绍: 1.ceph-deploy: ceph的部署软件,通过该软件可以简便部署,这个软件并非整个ceph集群系统中必须的 2.ceph: ceph整个服务集群中的每个节点必须的软件.提 ...
- 大数据平台-修改主机名及ssh免密码登录
一.查看服务器初始配置: 1.总核数 = 物理CPU个数 X 每颗物理CPU的核数 2.总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数 # 查看物理CPU个数cat /pr ...
- Oracle WebLogic Server 12c 新特性
美国时间2011年 12月9日,Oracle公司正式发布WebLogic 12c版本,c是cloud的缩写.截止当前(2013年8月)最新版本为Oracle WebLogic Server 12c ( ...
- MM 后台配置(转)
本文转自:https://www.cnblogs.com/yanglikun/p/4124797.html 一.全局配置 1.一般配置 SPRO->SAP NETWEAVER -> GEN ...
- 二级C语言真题笔记
二级C语言真题笔记 1. 知识重点:数据类型.循环.数组.函数.指针.结构体与共同体 2. 求程序的运行结果 #include <stdio.h> main() { short i ...
- fastclick源码分析
https://www.cnblogs.com/diver-blogs/p/5657323.html 地址 fastclick.js源码解读分析 阅读优秀的js插件和库源码,可以加深我们对web开发 ...