最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python中圖片轉(zhuǎn)換為pdf實現(xiàn)方法

 更新時間:2025年03月20日 10:41:22   作者:一位代碼  
本文主要介紹了使用Python的Pillow分支和reportlab庫將圖片轉(zhuǎn)換為PDF文件,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、PIL 庫簡介及安裝使用方法

本文將圖片轉(zhuǎn)換為 pdf 的實現(xiàn)方法,主要是基于 python 的第三方圖像處理庫 PIL。

PIL(Python Imaging Library),免費開源,提供了非常強(qiáng)大的圖像處理功能。

PIL,只支持 python 2.x 版本;隨著發(fā)展, Python 社區(qū)開發(fā)了一個名為 Pillow 的分支,一個兼容 PIL 的圖像處理庫,用以支持 python 3.x 版本。

Pillow,不僅繼承了 PIL 的功能,還在其基礎(chǔ)上增加了許多新的特性,使其成為比原始 PIL 更加活躍的圖像處理庫。

(一)python 不同版本下 PIL 的使用方法

(1)python 2.x:通常不需要單獨安裝,PIL 已包含在標(biāo)準(zhǔn)庫中,可直接使用。

(2)python 3.x:需要單獨安裝 Pillow 庫來代替 PIL。

作者使用的是 python 3.x,并直接通過 pip 安裝了 Pillow 庫。

安裝命令如下:

pip install Pillow

查看是否安裝成功及當(dāng)前版本:

pip show pillow

圖片

二、圖片轉(zhuǎn)換為 pdf 的兩種實現(xiàn)方法

(一)簡易版——pdf 頁面尺寸跟隨圖片大小

該段代碼適用于:

1、將單張或多張圖片轉(zhuǎn)換為 pdf。

2、目標(biāo)文件夾中有幾張圖片,轉(zhuǎn)換后的 pdf 就有多少頁。

3、轉(zhuǎn)換后的 pdf 頁面默認(rèn)尺寸設(shè)置:視具體情況而定。簡單來說,就是轉(zhuǎn)換后的 pdf 頁面尺寸會跟隨圖片大小,這樣也就導(dǎo)致 pdf 頁面大小不一。

完整代碼如下:

from PIL import Image as pilImage
import os


# 簡易版——圖片轉(zhuǎn)換為pdf,pdf頁面隨圖片大小浮動
def convert_images_to_pdf(image_file):
    os.chdir(image_file)
    images = []
    file_lis = os.listdir(image_file)
    output_path = 'output.pdf'
    con = 0
    for image_path in file_lis:
        if image_path.endswith(('.jpg', '.png')):
            image = pilImage.open(image_path)
            images.append(image.convert("RGB"))
            con += 1
            print(image_path + ':第%d張' % con)
    images[0].save(output_path, save_all=True, append_images=images[1:])
    print('轉(zhuǎn)換完成,共計%d張圖片' % len(images))


if __name__ == "__main__":
    image_file = input(r'輸入目標(biāo)圖片所在文件夾路徑(如E:\test):')
    convert_images_to_pdf(image_file)

測試結(jié)果—頁面隨圖片大小

圖片

圖片

注:本段代碼只涵蓋了常見的 jpg、png 兩種圖片格式,其他格式可以直接在代碼中追加。

圖片

(二)常用版——pdf 每頁尺寸統(tǒng)一為 A4

基于(一)中的代碼,引入了第三方模塊 reportlab,對轉(zhuǎn)換后的 pdf 頁面尺寸進(jìn)行設(shè)置。

1、第一步,先通過命令:pip show reportlab ,查看是否已經(jīng)安裝有 reportlab 模塊,已安裝的情況下會提示版本號等信息,并且在使用時不會報錯。

如果沒有安裝 reportlab 模塊,則需要進(jìn)行安裝:pip install reportlab。

注:經(jīng)作者實測,直接使用 pip 命令安裝可能會失敗,因每臺電腦所裝的 python 版本、環(huán)境依賴等,失敗情況可能也有所不同。解決辦法:先去下載對應(yīng)自身 python 版本的 reportlab 包或 whl 文件,再進(jìn)行安裝。常用下載鏈接可參考: https://pypi.org/search/?q=reportlab。

2、第二步,安裝好所需要的庫后,直接復(fù)制并運行下面的代碼,輸入需要轉(zhuǎn)換的圖片文件夾路徑即可。

該段代碼適用于:

1、將單張或多張圖片轉(zhuǎn)換為 pdf。

2、目標(biāo)文件夾中有幾張圖片,轉(zhuǎn)換后的 pdf 就有多少頁。

3、轉(zhuǎn)換后的 pdf 每頁大小均為 A4 。

完整代碼如下:

from PIL import Image as pilImage
from reportlab.platypus import SimpleDocTemplate, Image, PageBreak
from reportlab.lib.pagesizes import A4, landscape
import os


# 獲取目標(biāo)文件下圖片文件
def get_Images(image_file):
    images = []
    file_lis = os.listdir(image_file)
    for image_path in file_lis:
        if image_path.endswith(('jpg', 'png')):
            images.append(image_path)
    return images, image_file


# 常用版——圖片轉(zhuǎn)換為pdf,限制pdf頁面大小為A4
def convert_images_to_pdfp(images, image_file):
    os.chdir(image_file)

    # 獲取A4尺寸
    a4_w, a4_h = landscape(A4)

    # 創(chuàng)建一個PDF文檔
    pdf_doc = SimpleDocTemplate(r'tmp.pdf')

    if len(images) == 0:
        print('該文件夾路徑下無圖片,請檢查圖片格式!')
    elif len(images) == 1:
        # 獲取圖片尺寸
        img = pilImage.open(images[0])
        img_w, img_h = img.size
        # 設(shè)置合適的縮放比率
        ratio = min(a4_w / img_w, a4_h / img_h)
        # 創(chuàng)建文檔
        page = Image(images[0], img_w * ratio, img_h * ratio)
        pdf_doc.build([ page ])
        print(images[0] + '——轉(zhuǎn)換完成')
    else:
        frames = []  # 用于存儲多張圖片框架
        con = 0
        for image in images:
            # 獲取圖片尺寸
            img = pilImage.open(image)
            img_w, img_h = img.size
            # 設(shè)置合適的縮放比率
            ratio = min(a4_w / img_w, a4_h / img_h)
            # 儲存文檔內(nèi)容
            page = Image(image, img_w * ratio, img_h * ratio)
            frames.append(page)  # 將文檔內(nèi)容添加到列表中
            frames.append(PageBreak())  # 在每張圖片后添加PageBreak
            con += 1
            print(image + '——第%d張' % con)

        pdf_doc.build(frames)
        print('轉(zhuǎn)換完成,共計%d張' % len(images))


if __name__ == "__main__":
    image_file = input(r'輸入目標(biāo)圖片所在文件夾路徑(如E:\test):')
    images = get_Images(image_file)
    convert_images_to_pdfp(images[0], images[1])

測試結(jié)果——每頁均為 A4 大小

圖片

圖片

注:本段代碼只涵蓋了常見的 jpg、png 兩種圖片格式,其他格式可以直接在代碼中追加即可。

總結(jié):圖片的大小是轉(zhuǎn)換后的 pdf 是否清晰、符合要求的重要因素。代碼(二)中對圖片進(jìn)行了簡單縮放,可以根據(jù)自身需求在代碼中對圖片大小進(jìn)行調(diào)整。(如果對代碼不是很熟悉,有一招簡單方法,就是轉(zhuǎn)換之前,可以先P圖)。

以上就是基于 python 第三方庫 PIL、reportlab ,將圖片轉(zhuǎn)換為pdf的方法,可供參考。更多相關(guān)python 圖片轉(zhuǎn)換為pdf 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python利用winreg生成桌面路徑及實現(xiàn)掃描二維碼圖片返回相關(guān)信息

    python利用winreg生成桌面路徑及實現(xiàn)掃描二維碼圖片返回相關(guān)信息

    這篇文章主要介紹了python生成桌面路徑及實現(xiàn)掃描二維碼圖片返回相關(guān)信息,winreg是python的一個標(biāo)準(zhǔn)庫,用來對windows注冊表的操作,更多相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2022-06-06
  • 使用Python繪制精美雷達(dá)圖

    使用Python繪制精美雷達(dá)圖

    雷達(dá)圖(Radar Chart) 就像一位全能選手,以其獨特的環(huán)形布局,讓多維數(shù)據(jù)的對比變得直觀又美觀,下面我們就來看看如何使用Python繪制精美雷達(dá)圖吧
    2025-07-07
  • python視頻按幀截取圖片工具

    python視頻按幀截取圖片工具

    這篇文章主要為大家詳細(xì)介紹了python視頻按幀截取圖片工具,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Python使用正則表達(dá)式報錯:nothing?to?repeat?at?position?0的解決方案

    Python使用正則表達(dá)式報錯:nothing?to?repeat?at?position?0的解決方案

    今天在使用python 正則模塊匹配字符串時遇到了這個問題,分享給大家,這篇文章主要給大家介紹了關(guān)于Python使用正則表達(dá)式報錯nothing?to?repeat?at?position?0的解決方案,需要的朋友可以參考下
    2023-03-03
  • 使用Python保存網(wǎng)頁上的圖片或者保存頁面為截圖

    使用Python保存網(wǎng)頁上的圖片或者保存頁面為截圖

    這篇文章主要介紹了使用Python保存網(wǎng)頁上的圖片或者保存頁面為截圖的方法,保存網(wǎng)頁圖片主要用到urllib模塊,即簡單的爬蟲原理,需要的朋友可以參考下
    2016-03-03
  • Django中的forms組件實例詳解

    Django中的forms組件實例詳解

    這篇文章主要介紹了Django的forms組件,本文通過實例代碼介紹了Django的forms組件,需要的朋友可以參考下
    2018-11-11
  • Python類的用法實例淺析

    Python類的用法實例淺析

    這篇文章主要介紹了Python類的用法,以實例形式簡單分析了Python中類的定義、構(gòu)造函數(shù)及使用技巧,需要的朋友可以參考下
    2015-05-05
  • Python使用jupyter notebook查看ipynb文件過程解析

    Python使用jupyter notebook查看ipynb文件過程解析

    這篇文章主要介紹了Python使用jupyter notebook查看ipynb文件過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • Python多繼承原理與用法示例

    Python多繼承原理與用法示例

    這篇文章主要介紹了Python多繼承原理與用法,簡單描述了Python多繼承的相關(guān)概念、原理并結(jié)合實例形式分析了Python多繼承的具體定義、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下
    2018-08-08
  • python如何將多個模型的ROC曲線繪制在一張圖(含圖例)

    python如何將多個模型的ROC曲線繪制在一張圖(含圖例)

    這篇文章主要給大家介紹了關(guān)于python如何將多個模型的ROC曲線繪制在一張圖的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2022-02-02

最新評論

包头市| 洱源县| 富锦市| 辽中县| 武强县| 阜新| 安龙县| 两当县| 精河县| 延寿县| 维西| 岐山县| 石嘴山市| 大竹县| 原阳县| 宜兰市| 阿勒泰市| 江门市| 丰台区| 天峨县| 南通市| 文山县| 响水县| 曲水县| 珠海市| 舟山市| 彭山县| 化德县| 清水县| 浪卡子县| 海丰县| 伊吾县| 邓州市| 长治市| 五莲县| 长垣县| 云南省| 泾源县| 呼玛县| 霞浦县| 武冈市|