Java实现将彩色PDF转为灰度PDF的示例代码

网友投稿 463 2022-08-18


Java实现将彩色PDF转为灰度PDF的示例代码

目录配置程序环境转彩色PDF为灰度实现代码(java)补充

本文以Java代码为例介绍如何实现将彩色PDF文件转为灰度(黑白)的PDF文件,即:将PDF文档里面的彩色图片或者文字等通过调用PdfGrayConverter.toGrayPdf()方法转为文档页面为灰色调、无彩色效果的文档,可实现缩小文档大小的目的。下面是程序运行环境及代码示例。

DEuPv

配置程序环境

IntelliJ IDEA

Spire.PDF for Java 5.3.1

PDF文档

关于如何引入jar文件:

1.通过Maven仓库下载,如下配置Pom.xml:

com.e-iceblue

https://repo.e-iceblue.cn/repository/maven-public/

e-iceblue

spire.pdf

5.3.1

2.手动添加jar

下载jar包到本地,然后解压,找到lib文件夹下的Spire.Pdf.jar。然后在IDEA中打开如下界面,将本地路径下的jar文件添加至Java程序。

转彩色PDF为灰度

这里转换只需用到以下两个步骤:

使用 PdfGrayConverter类加载PDF文件。调用 PdfGrayConverter.toGrayPdf() 方法将 PDF 转换为灰度。

实现代码(Java)

import com.spire.pdf.conversion.*;

public class ToGrayPDF {

public static void main(String[] args) {

//创建一个PdfGrayConverter实例并加载PDF文档

PdfGrayConverter converter = new PdfGrayConverter("Booklet.pdf");

//将彩色PDF转换为灰度

converter.toGrayPdf("ToGray.pdf");

converter.dispose();

}

}

转换结果:

补充

Java不仅能将彩色PDF转换为灰度的PDF,还能实现将彩色图像转换为灰度图像,下面是实现步骤

黑白图像只有黑白两种颜色,所以用灰度值0-255来表示黑白的比例。

在彩色图像中有RGB三种颜色的分量来表示颜色,当R=G=B时,就显示出灰色。

由RGB来求得灰度值的方法有好几种,可以取RGB的比例3:6:1,这样算出的灰度应用到图像中就能生成不错的黑白图像。

下面放出2张效果图,分别是原图和转换的黑白图:

根据上面的RGB比例公式得出一个计算灰度值得函数

//计算像素点的灰度

public static int getGray(Color pixel) {

return (pixel.getRed()*30+pixel.getGreen()*60+pixel.getBlue()*10)/100;

}

接下来就是读取一个图片到BufferedImage然后遍历面一个像素点的颜色,用getGray算出灰度值再赋值成为该点新的颜色值(R=G=B=算出的灰度值)

代码如下

JFileChooser jChooser = new JFileChooser();

//设置默认的打开目录,如果不设的http://话按照window的默认目录(我的文档)

jChooser.setCurrentDirectory(new File("f:/"));

//打开一个对话框

int index = jChooser.showDialog(null, "打开文件");

if (index == JFileChooser.APPROVE_OPTION) {

path=jChooser.getSelectedFile().getAbsolutePath();

}

Image img = new ImageIcon(path).getImage();

BufferedImage bfi = new BufferedImage(img.getWidth(null),img.getHeight(null),BufferedImage.TYPE_INT_RGB);

bfi.getGraphics().drawImage(img, 0, 0,null);

for(int y=0;y

for(int x=0;x

Color pixel = new Color(bfi.getRGB(http://x, y));

bfi.setRGB(x, y,new Color(getGray(pixel),getGray(pixel),getGray(pixel)).getRGB());

}

ImageIO.write(bfi, "JPEG", new File("1.jpg"));

for(int x=0;x

Color pixel = new Color(bfi.getRGB(http://x, y));

bfi.setRGB(x, y,new Color(getGray(pixel),getGray(pixel),getGray(pixel)).getRGB());

}

ImageIO.write(bfi, "JPEG", new File("1.jpg"));

Color pixel = new Color(bfi.getRGB(http://x, y));

bfi.setRGB(x, y,new Color(getGray(pixel),getGray(pixel),getGray(pixel)).getRGB());

}

ImageIO.write(bfi, "JPEG", new File("1.jpg"));


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:使用Mybatis更新时候只更新变更部分的方法
下一篇:SpringBoot2零基础到精通之配置文件与web开发
相关文章

 发表评论

暂时没有评论,来抢沙发吧~