欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java實現(xiàn)將彩色PDF轉(zhuǎn)為灰度PDF的示例代碼

 更新時間:2022年03月22日 14:44:33   作者:E-iceblue  
本文以Java代碼為例介紹如何實現(xiàn)將彩色PDF文件轉(zhuǎn)為灰度(黑白)的PDF文件,文中的示例代碼講解詳細(xì),感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下吧

本文以Java代碼為例介紹如何實現(xiàn)將彩色PDF文件轉(zhuǎn)為灰度(黑白)的PDF文件,即:將PDF文檔里面的彩色圖片或者文字等通過調(diào)用PdfGrayConverter.toGrayPdf()方法轉(zhuǎn)為文檔頁面為灰色調(diào)、無彩色效果的文檔,可實現(xiàn)縮小文檔大小的目的。下面是程序運行環(huán)境及代碼示例。

配置程序環(huán)境

IntelliJ IDEA

Spire.PDF for Java 5.3.1

PDF文檔

關(guān)于如何引入jar文件:

1.通過Maven倉庫下載,如下配置Pom.xml:

<repositories>
    <repository>
        <id>com.e-iceblue</id>
            <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
        </repository>
    </repositories>
<dependencies>
    <dependency>
        <groupId> e-iceblue </groupId>
        <artifactId>spire.pdf</artifactId>
        <version>5.3.1</version>
    </dependency>
</dependencies>

2.手動添加jar

下載jar包到本地,然后解壓,找到lib文件夾下的Spire.Pdf.jar。然后在IDEA中打開如下界面,將本地路徑下的jar文件添加至Java程序。

轉(zhuǎn)彩色PDF為灰度

這里轉(zhuǎn)換只需用到以下兩個步驟:

  • 使用 PdfGrayConverter類加載PDF文件。
  • 調(diào)用 PdfGrayConverter.toGrayPdf() 方法將 PDF 轉(zhuǎn)換為灰度。

實現(xiàn)代碼(Java)

import com.spire.pdf.conversion.*;

public class ToGrayPDF {
    public static void main(String[] args) {
        //創(chuàng)建一個PdfGrayConverter實例并加載PDF文檔
        PdfGrayConverter converter = new PdfGrayConverter("Booklet.pdf");

        //將彩色PDF轉(zhuǎn)換為灰度
        converter.toGrayPdf("ToGray.pdf");
        converter.dispose();
    }
}

轉(zhuǎn)換結(jié)果:

補充

Java不僅能將彩色PDF轉(zhuǎn)換為灰度的PDF,還能實現(xiàn)將彩色圖像轉(zhuǎn)換為灰度圖像,下面是實現(xiàn)步驟

黑白圖像只有黑白兩種顏色,所以用灰度值0-255來表示黑白的比例。

在彩色圖像中有RGB三種顏色的分量來表示顏色,當(dāng)R=G=B時,就顯示出灰色。

由RGB來求得灰度值的方法有好幾種,可以取RGB的比例3:6:1,這樣算出的灰度應(yīng)用到圖像中就能生成不錯的黑白圖像。

下面放出2張效果圖,分別是原圖和轉(zhuǎn)換的黑白圖:

根據(jù)上面的RGB比例公式得出一個計算灰度值得函數(shù)

   //計算像素點的灰度
    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();
    //設(shè)置默認(rèn)的打開目錄,如果不設(shè)的話按照window的默認(rèn)目錄(我的文檔)
    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<bfi.getHeight();y++) 
        for(int x=0;x<bfi.getWidth();x++) {
            Color pixel = new Color(bfi.getRGB(x, y));
            bfi.setRGB(x, y,new Color(getGray(pixel),getGray(pixel),getGray(pixel)).getRGB());
        }
    ImageIO.write(bfi, "JPEG", new File("1.jpg"));

到此這篇關(guān)于Java實現(xiàn)將彩色PDF轉(zhuǎn)為灰度PDF的示例代碼的文章就介紹到這了,更多相關(guān)Java彩色PDF轉(zhuǎn)灰度內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot中jar打包并部署到Tomcat

    SpringBoot中jar打包并部署到Tomcat

    最近做了一個SpringBoot項目,今天介紹一下SpringBoot中jar打包并部署到Tomcat,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • Spring Boot中的WebSocketMessageBrokerConfigurer接口使用

    Spring Boot中的WebSocketMessageBrokerConfigurer接口使用

    在SpringBoot中,我們可以使用 WebSocketMessageBrokerConfigurer接口來配置WebSocket消息代理,以實現(xiàn)實時通信,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • jstl之map,list訪問遍歷以及el表達(dá)式map取值的實現(xiàn)

    jstl之map,list訪問遍歷以及el表達(dá)式map取值的實現(xiàn)

    下面小編就為大家?guī)硪黄猨stl之map,list訪問遍歷以及el表達(dá)式map取值的實現(xiàn)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • Java集合框架之List ArrayList LinkedList使用詳解刨析

    Java集合框架之List ArrayList LinkedList使用詳解刨析

    早在 Java 2 中之前,Java 就提供了特設(shè)類。比如:Dictionary, Vector, Stack, 和 Properties 這些類用來存儲和操作對象組。雖然這些類都非常有用,但是它們?nèi)鄙僖粋€核心的,統(tǒng)一的主題。由于這個原因,使用 Vector 類的方式和使用 Properties 類的方式有著很大不同
    2021-10-10
  • Java與SpringBoot對redis的使用方式

    Java與SpringBoot對redis的使用方式

    這篇文章主要介紹了Java與SpringBoot對redis的使用方式,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-08-08
  • Spring入門到精通之Bean標(biāo)簽詳解

    Spring入門到精通之Bean標(biāo)簽詳解

    這篇文章主要為大家詳細(xì)介紹了Spring中Bean的標(biāo)簽,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Spring有一定的幫助,快跟隨小編一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 淺談Java中File文件的創(chuàng)建以及讀寫

    淺談Java中File文件的創(chuàng)建以及讀寫

    文中有非常詳細(xì)的步驟介紹了Java中file文件的創(chuàng)建以及讀寫,對剛開始學(xué)習(xí)java的小伙伴們很有幫助,而且下文有非常詳細(xì)的代碼示例及注釋哦,需要的朋友可以參考下
    2021-05-05
  • async-excel實現(xiàn)多sheet異步導(dǎo)出方法詳解

    async-excel實現(xiàn)多sheet異步導(dǎo)出方法詳解

    這篇文章主要介紹了async-excel實現(xiàn)多sheet異步導(dǎo)出方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-12-12
  • SpringBoot最簡潔的國際化配置

    SpringBoot最簡潔的國際化配置

    這篇文章主要介紹了SpringBoot最簡潔的國際化配置,Spring Boot是一個用于構(gòu)建獨立的、生產(chǎn)級別的Spring應(yīng)用程序的框架,國際化是一個重要的功能,它允許應(yīng)用程序根據(jù)用戶的語言和地區(qū)顯示不同的內(nèi)容,在Spring Boot中,實現(xiàn)國際化非常簡單,需要的朋友可以參考下
    2023-10-10
  • Java MyBatis可視化代碼生成工具使用教程

    Java MyBatis可視化代碼生成工具使用教程

    這篇文章主要介紹了Java MyBatis可視化代碼生成工具使用教程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11

最新評論