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中,如果我们想要提取出一个文档内的图片,只需要右击图片选择另存为然后命名保存就可以了,今天这篇文章主要是实现使 ...
随机推荐
- Red Hat安全性指南
https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/security_guide/sec-usi ...
- 1.Java Spring MVC入门 安装
Spring 下载地址: 4.3.6.RELEASE/ 25-Jan-2017 14:05 - http://repo.spring.io/release/org/springframework/sp ...
- UIViewContentMode-
图片很小,frame很大 图片很大,frame很小 UIViewContentModeScaleToFill, UIViewContentModeScaleAspectFit, UIViewConte ...
- scrollto 到指定位置
goTo = function(target){ var scrollT = document.body.scrollTop|| document.documentElement.scrollTop ...
- nginx高性能WEB服务器系列之三版本升级
nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...
- esp32编程第一例 hollow word
#include<stdio.h>#include"freertos/FreeRtos.h"#include"freertos/task.h"#in ...
- 2018年10月19 手记 - 身为开发者的我de窘境
从10月1国庆过完节回来,那已经是7号了,之后便开始紧锣密鼓的筹划着接下来11月份的公司组织的对外活动,这边新来的产品对产品或者说对任务很是负责,并且策划了很多的方案,并且乐意站在我们开发的角度上去考 ...
- java中引用
java中引用分为,强,弱,虚,软 (1)强引用 使用最普遍的引用.如果一个对象具有强引用,它绝对不会被gc回收.如果内存空间不足了,gc宁愿抛出OutOfMemoryError,也不是会回收具有强引 ...
- java操作html格式数据
近期在做数据抓取功能,抓取到的数据为html格式,需在后台进行转换后取值,为了避免使用字符串查找方式获取而使用Jsonp完美实现. 1. 引入Jsonp: <dependency> < ...
- P1001 A+B Problem (树链剖分)
这题考验我们构造模型的能力. 考虑构造一棵树,树上有3个节点,节点1和节点2连一条权值为a的边,节点1和节点3连一条权值为b的边,显然答案就是节点2到节点3的最短路径. 但这样还不够.考虑加法的性质, ...