首先缩放图像,然后使用iText打开缩放图像.

ImageDataFactory中有一个接受AWT图像的create方法.首先使用AWT工具缩放图像,然后像这样打开它:

String imagePath = "C:\\path\\to\\image.jpg";

java.awt.Image awtImage = ImageIO.read(new File(imagePath));

// scale image here

int scaledWidth = awtImage.getWidth(null) / 2;

int scaledHeight = awtImage.getHeight(null) / 2;

BufferedImage scaledAwtImage = new BufferedImage(scaledWidth, scaledHeight, BufferedImage.TYPE_INT_RGB);

Graphics2D g = scaledAwtImage.createGraphics();

g.drawImage(awtImage, 0, 0, scaledWidth, scaledHeight, null);

g.dispose();

/*

Optionally pick a color to replace with transparency.

Any pixels that match this color will be replaced by tansparency.

*/

Color bgColor = Color.WHITE;

Image itextImage = new Image(ImageDataFactory.create(scaledAwtImage, bgColor));

如果在添加到PDF时仍需要原始大小,请再次将其重新缩放.

itextImage.scale(2f, 2f);

注意:此代码未经测试.

编辑回应对赏金的评论

你让我思考和寻找.似乎iText将AWT图像导入为原始图像.我认为它对待它就像BMP一样,它只是writes the pixel data using /FlateDecode,这可能远远不是最佳的.我能想到实现您的要求的唯一方法是使用ImageIO将缩放后的图像写入文件系统或将ByteArrayOutputStream写为jpeg,然后使用生成的文件/字节打开iText.

这是使用字节数组的更新示例.如果你想更多地了解压缩级别等,refer here.

String imagePath = "C:\\path\\to\\image.jpg";

java.awt.Image awtImage = ImageIO.read(new File(imagePath));

// scale image here

int scaledWidth = awtImage.getWidth(null) / 2;

int scaledHeight = awtImage.getHeight(null) / 2;

BufferedImage scaledAwtImage = new BufferedImage(scaledWidth, scaledHeight, BufferedImage.TYPE_INT_RGB);

Graphics2D g = scaledAwtImage.createGraphics();

g.drawImage(awtImage, 0, 0, scaledWidth, scaledHeight, null);

g.dispose();

ByteArrayOutputStream bout = new ByteArrayOutputStream()

ImageIO.write(scaledAwtImage, "jpeg", bout);

byte[] imageBytes = bout.toByteArray();

Image itextImage = new Image(ImageDataFactory.create(imageBytes));

java itext图片大小_java – iText:降低图像质量(减少生成的PDF大小)相关推荐

  1. java 简单图片浏览器_Java实现简单的图片浏览器

    第一次写博客,不喜勿喷. 最近一个小师弟问我怎么用Java做图片浏览器,感觉好久没玩Java了,就自己动手做了一下. 学校的教程是用Swing来做界面的,所以这里也用这个来讲. 首先要做个大概的界面出 ...

  2. java 背景图片自适应_java 背景图片随窗口大小变化进行自动缩放及平铺 | 学步园...

    最近一直被这个问题困扰这,上网也搜了不少这方面的知识,发现很多人都说用reapint方法(很简单的)进行图片重绘就OK了(没源码),于是乎至今也没实现 但通过自己的摸索也确实学到了不少东东滴! 在看代 ...

  3. java 对图片解码_java对图片的转码和解码 实用

     工作中遇到的问题 百度了下  自己整理一下 代码如下: public class Base64 { public static void main(String[] args) { String ...

  4. java jlabel 字体大小_java – 如何更改所有私有JLabel的字体大小

    我见过类似的问题,例如this,但在我的情况下,我有25个私有JLabel,我在声明时给出了一个值.我在构造函数中使用GridBagLayout将这些JLabel添加到JPanel.如果我按照链接中给 ...

  5. 文档大小超出上传限制怎么办_压缩PDF大小该怎么操作?压缩PDF的软件有哪些?...

    压缩PDF大小该怎么操作?工作中使用的任何设备的储存空间都是有限制的,为了能让自己的电脑储存更多的文件,我们可以将多个PDF文件进行压缩再存储.那么我怎么压缩PDF文件呢?下面就小编就来告诉大家压缩P ...

  6. java itext 图片_在 iText 中剪裁图片

    Java 中使用 iText 在创建 PDF 文件的时候,基于各种需求,我们可能需要将图片进行裁剪后,添加到 PDF 中.使用 BufferedImage 等直接对图片进行剪裁然后添加的方式就不说了. ...

  7. java xml内存泄漏_java - iText HTML到PDF的内存泄漏 - 堆栈内存溢出

    对于Maven项目:将以下依赖项添加到项目的pom.xml文件中: org.apache.poi poi-ooxml 3.14 com.itextpdf itextpdf 5.5.8 com.itex ...

  8. java中图片排版_Java实现第八届蓝桥杯图形排版

    标题:图形排版 小明需要在一篇文档中加入 N 张图片,其中第 i 张图片的宽度是 Wi,高度是 Hi. 假设纸张的宽度是 M,小明使用的文档编辑工具会用以下方式对图片进行自动排版: 1. 该工具会按照 ...

  9. java下载图片压缩包_java压缩文件和下载图片示例

    本文实例为大家分享了java压缩文件和下载图片示例,供大家参考,具体内容如下 主页面index.xml 项目的主页 主页主页 湖南长沙 发布方式一...... 页面内容压缩演示--gzip 下载图片 ...

最新文章

  1. java学习笔记_Java学习笔记——第1篇
  2. **CI两种方式查询所返回的结果数量
  3. AD不能复制提示目标主要名称不正确
  4. 图像识别 43个模型
  5. jsp mysql在线考试系统源码_jsp+ssm+mysql实现的学生在线考试系统项目源码附带视频导入运行教程...
  6. 90后一代人还能通过攒钱改变现状吗?
  7. Win10乱码了怎么解决 Win10系统乱码解决办法
  8. ettercap dns_spoof
  9. python学习笔记第三节
  10. 小米笔记本 镜像_小米笔记本Air 13.3原装WIN10出厂系统ISO镜像1607原版镜像下载
  11. 【图神经网络】ChebyNet-切比雪夫多项式近似图卷积核
  12. 张正友标定算法原理详解
  13. localhost和127.0.0.1的区别
  14. java代码绘制简单的图形
  15. 一步步教你搭建Android开发环境(有图有真相)--“自吹自擂:史上最详细、最啰嗦、最新的搭建教程”
  16. 数据库的行列互换问题
  17. 转让英孚10个月课程
  18. 转: 网页设计中的一些色彩搭配技巧
  19. 如何申请ATT官方解锁iPhone4
  20. 计算机桌面上的软件是内存上吗,电脑软件运行提示内存不足,占内存小的游戏-...

热门文章

  1. Unity 使用陀螺仪判断手机方向
  2. 程序员的工资大概多少?
  3. Java 集合中汉字按自然顺序排序
  4. cookie跨域,实现单点登录
  5. cufflinks修改使用
  6. 计算机软件从业证书,互联网行业从业人员证书
  7. MySQL数据库的InnoDB引擎TableSpaceExists问题解决
  8. 程序编写——四步制作漫画线稿出书
  9. 如何绘画漫画人物眼睛?人物眼睛画法教程!
  10. 理解Play框架线程池