校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識(shí)庫 > Python 多張圖片合并成一個(gè)pdf的參考示例

Python 多張圖片合并成一個(gè)pdf的參考示例

熱門標(biāo)簽:大連crm外呼系統(tǒng) 老人電話機(jī)器人 洪澤縣地圖標(biāo)注 梅州外呼業(yè)務(wù)系統(tǒng) 高德地圖標(biāo)注是免費(fèi)的嗎 北京電信外呼系統(tǒng)靠譜嗎 地圖標(biāo)注視頻廣告 無錫客服外呼系統(tǒng)一般多少錢 百度地圖標(biāo)注位置怎么修改

過程

拿到一個(gè)需求最重要的就是將大塊任務(wù)拆分成一個(gè)個(gè)小模塊,逐個(gè)擊破。

拍照

這一步首先是將所有的書頁拍好,需要注意的是要按照書的頁碼來拍,因?yàn)楹竺娴呐判蚴前凑瘴募M(jìn)行排序的,拍照的文件名基本上是按照時(shí)間生成的,如果拍的時(shí)候亂了,到時(shí)候生成的 pdf 里面的頁碼也會(huì)亂掉。

用到的Python 操作庫

Python 最好的地方就是有大量的第三方庫能幫我們快速實(shí)現(xiàn)我們想要的方法,搜索到了兩個(gè)庫, PyFPDF 和img2pdf,我們這里選擇img2pdf來完成我們的需求 pip install img2pdf

Python遍歷文件夾獲取圖片

    dirname = "f:/wlzcool"
    imgs = []
    for fname in os.listdir(dirname):
        if not fname.endswith(".jpg"):
            continue
        path = os.path.join(dirname, fname)
        if os.path.isdir(path):
            continue
        imgs.append(path)

需要注意圖片的文件名如果是純數(shù)字且位數(shù)不一樣,排序會(huì)為1之后是10而不是2,需要進(jìn)行一個(gè)排序,如果是手機(jī)拍的文件就沒有這個(gè)問題。 files.sort(key=lambda x: int(x[:-4]))

旋轉(zhuǎn)圖片展示方向并壓縮像素

有的時(shí)候手機(jī)拍出來的圖片是水平的,需要將其改為豎直的
用rotate旋轉(zhuǎn)方向的時(shí)候需要注意加上expand=True 這個(gè)參數(shù),否則會(huì)有黑邊出現(xiàn)。

手機(jī)的照片像素太高,有的需要進(jìn)行壓縮以保證最后生成的pdf的大小適中。

    img = Image.open(path)    
    if img.size[0] > img.size[1]:
        im_rotate = img.rotate(90, expand=True)
        size = (int(im_rotate.size[0] / 3), int(im_rotate.size[1] / 3))
        im_rotate = im_rotate.resize(size)
        im_rotate.save(savepath, quality=95)
    else:
        size = (int(img.size[0] / 3), int(img.size[1] / 3))
        img = img.resize(size)
        img.save(savepath, quality=95)

整體代碼

寫成腳本需要考慮的有很多,為了方便使用,需要將各種參數(shù)改為允許用戶輸入的。比如圖片文件夾所在的路徑,壓縮比之類的

from PIL import Image
import os
import img2pdf

flag = False
while not flag:
    dirname = input("請(qǐng)輸入圖片文件夾所在路徑(例如d:/wlzcool):")
    flag = os.path.exists(dirname)
    if not flag:
        print("圖片文件夾所在路徑不存在!")
saveflag = False
while not saveflag:
    savedirname = input("請(qǐng)輸入目標(biāo)圖片文件夾所在路徑(例如d:/wlzcool2):")
    saveflag = os.path.exists(savedirname)
    if not saveflag:
        print("圖片文件夾所在路徑不存在!")
        automakedir = input("是否自動(dòng)創(chuàng)建對(duì)應(yīng)文件夾?(是Y/否N):")
        if automakedir.strip().upper() == "Y":
            os.makedirs(savedirname)
            saveflag = True
files = os.listdir(dirname)
reductionFactor = int(input("請(qǐng)輸入長寬壓縮比(例如3):"))
if reductionFactor = 0:
    reductionFactor = 3
isConvertBlack = input("是否輸出黑白版本?(是Y/否N):").strip().upper() == "Y"
for fname in files:
    if not fname.endswith(".jpg"):
        continue
    path = os.path.join(dirname, fname)
    savePath = os.path.join(savedirname, fname)
    if os.path.isdir(path):
        continue
    img = Image.open(path)    
    if img.size[0] > img.size[1]:
        im_rotate = img.rotate(90, expand=True)
        size = (int(im_rotate.size[0] / reductionFactor), int(im_rotate.size[1] / reductionFactor))
        im_rotate = im_rotate.resize(size)
        if isConvertBlack:
            im_rotate = im_rotate.convert("L")
        im_rotate.save(savePath, quality=95)
    else:
        size = (int(img.size[0] / reductionFactor), int(img.size[1] / reductionFactor))
        img = img.resize(size)
        if isConvertBlack:
            img = img.convert("L")
        img.save(savePath, quality=95)
filename = input("請(qǐng)輸入輸出文件名(例如:第一章):")
with open(filename + ".pdf", "wb") as f:
    imgs = []
    files = os.listdir(savedirname)
    for fname in files:
        if not fname.endswith(".jpg"):
            continue
        path = os.path.join(savedirname, fname)
        if os.path.isdir(path):
            continue
        imgs.append(path)
    f.write(img2pdf.convert(imgs))

整體代碼

寫成腳本需要考慮的有很多,為了方便使用,需要將各種參數(shù)改為允許用戶輸入的。比如圖片文件夾所在的路徑,壓縮比之類的

from PIL import Image
import os
import img2pdf

flag = False
while not flag:
    dirname = input("請(qǐng)輸入圖片文件夾所在路徑(例如d:/wlzcool):")
    flag = os.path.exists(dirname)
    if not flag:
        print("圖片文件夾所在路徑不存在!")
saveflag = False
while not saveflag:
    savedirname = input("請(qǐng)輸入目標(biāo)圖片文件夾所在路徑(例如d:/wlzcool2):")
    saveflag = os.path.exists(savedirname)
    if not saveflag:
        print("圖片文件夾所在路徑不存在!")
        automakedir = input("是否自動(dòng)創(chuàng)建對(duì)應(yīng)文件夾?(是Y/否N):")
        if automakedir.strip().upper() == "Y":
            os.makedirs(savedirname)
            saveflag = True
files = os.listdir(dirname)
reductionFactor = int(input("請(qǐng)輸入長寬壓縮比(例如3):"))
if reductionFactor = 0:
    reductionFactor = 3
isConvertBlack = input("是否輸出黑白版本?(是Y/否N):").strip().upper() == "Y"
for fname in files:
    if not fname.endswith(".jpg"):
        continue
    path = os.path.join(dirname, fname)
    savePath = os.path.join(savedirname, fname)
    if os.path.isdir(path):
        continue
    img = Image.open(path)    
    if img.size[0] > img.size[1]:
        im_rotate = img.rotate(90, expand=True)
        size = (int(im_rotate.size[0] / reductionFactor), int(im_rotate.size[1] / reductionFactor))
        im_rotate = im_rotate.resize(size)
        if isConvertBlack:
            im_rotate = im_rotate.convert("L")
        im_rotate.save(savePath, quality=95)
    else:
        size = (int(img.size[0] / reductionFactor), int(img.size[1] / reductionFactor))
        img = img.resize(size)
        if isConvertBlack:
            img = img.convert("L")
        img.save(savePath, quality=95)
filename = input("請(qǐng)輸入輸出文件名(例如:第一章):")
with open(filename + ".pdf", "wb") as f:
    imgs = []
    files = os.listdir(savedirname)
    for fname in files:
        if not fname.endswith(".jpg"):
            continue
        path = os.path.join(savedirname, fname)
        if os.path.isdir(path):
            continue
        imgs.append(path)
    f.write(img2pdf.convert(imgs))

將腳本打包成exe

不是所有的電腦都有Python環(huán)境,我們需要將腳本打包成exe方便在任意一臺(tái)電腦上使用。 使用 PyInstaller 來進(jìn)行腳本的打包

安裝 PyInstaller

pip install pyinstaller

打包腳本

在腳本所在的路徑的cmd中執(zhí)行以下命令即可

pyinstaller -F yourprogram.py

總結(jié)

人生苦短,我用 Python,在強(qiáng)大的第三方庫幫助下,我們只需很少的時(shí)間就可以開發(fā)一個(gè)很有意思的小功能。

以上就是Python 多張圖片合并成一個(gè)pdf的參考示例的詳細(xì)內(nèi)容,更多關(guān)于Python 圖片合并成pdf的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • python解析PDF程序代碼
  • python實(shí)現(xiàn)csdn全部博文下載并轉(zhuǎn)PDF
  • Python合并多張圖片成PDF
  • Python提取PDF指定內(nèi)容并生成新文件
  • 詳解用Python把PDF轉(zhuǎn)為Word方法總結(jié)
  • python操作mysql、excel、pdf的示例
  • python pdfkit 中文亂碼問題的解決方案
  • python 三種方法提取pdf中的圖片
  • Python實(shí)現(xiàn)給PDF添加水印的方法
  • Python讀取pdf表格寫入excel的方法

標(biāo)簽:吉林 長春 岳陽 清遠(yuǎn) 洛陽 泉州 安慶 怒江

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Python 多張圖片合并成一個(gè)pdf的參考示例》,本文關(guān)鍵詞  Python,多張,圖片,合并,成,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Python 多張圖片合并成一個(gè)pdf的參考示例》相關(guān)的同類信息!
  • 本頁收集關(guān)于Python 多張圖片合并成一個(gè)pdf的參考示例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    欧美日韩中文精品| 99免费精品视频| 91精品国产综合久久香蕉的特点| 亚洲日本成人在线观看| 91免费看`日韩一区二区| 亚洲男人的天堂av| 欧美精品亚洲一区二区在线播放| 蜜臀av国产精品久久久久| 欧美成人三级电影在线| 风间由美一区二区三区在线观看| 成人免费小视频| 欧美三级电影一区| 国产剧情一区在线| 亚洲人成7777| 91精品视频网| 国产成人自拍网| 一区二区三区中文字幕在线观看| 欧美日韩国产影片| 国产在线视频一区二区| 中文字幕一区三区| 欧美一区二区私人影院日本| 国产主播一区二区三区| 亚洲欧美影音先锋| 日韩免费看的电影| 91美女视频网站| 另类的小说在线视频另类成人小视频在线| 337p粉嫩大胆噜噜噜噜噜91av| 91在线你懂得| 蜜桃视频一区二区| 亚洲视频你懂的| 精品久久人人做人人爱| 色94色欧美sute亚洲线路一久| 日本午夜一本久久久综合| 国产调教视频一区| 欧美精品少妇一区二区三区| 国产成人在线视频网站| 午夜免费久久看| 国产精品久久久久影院色老大| 欧美日本一区二区在线观看| 国产乱码精品一区二区三| 亚洲永久精品国产| 国产精品久久久久四虎| 日韩一区二区三区电影 | 亚洲精品在线观看视频| 色成年激情久久综合| 国产精品亚洲第一区在线暖暖韩国| 一区二区三区波多野结衣在线观看| 精品第一国产综合精品aⅴ| 在线观看视频欧美| 丰满放荡岳乱妇91ww| 美女视频黄 久久| 一区二区三区免费网站| 国产精品少妇自拍| 日韩免费观看2025年上映的电影 | 欧美va亚洲va香蕉在线| 色哟哟一区二区三区| 国产精品中文字幕日韩精品| 午夜精品aaa| 夜色激情一区二区| 综合色中文字幕| 国产精品女同一区二区三区| 久久综合久色欧美综合狠狠| 欧美一级理论片| 欧美日韩三级一区二区| 欧美色综合天天久久综合精品| 岛国av在线一区| 国产白丝网站精品污在线入口| 另类调教123区| 青椒成人免费视频| 日韩精品91亚洲二区在线观看 | 琪琪久久久久日韩精品| 亚洲一区二区四区蜜桃| 一区二区免费看| 一区二区三区产品免费精品久久75| 中文字幕一区二区三区四区不卡 | 国产乱子轮精品视频| 久久er99热精品一区二区| 青青草97国产精品免费观看无弹窗版| 午夜精品视频在线观看| 午夜欧美大尺度福利影院在线看| 亚洲国产精品久久久久秋霞影院| 亚洲专区一二三| 亚洲成av人影院| 日韩主播视频在线| 麻豆久久久久久久| 韩国毛片一区二区三区| 国产一区二区三区免费在线观看| 激情六月婷婷久久| 国产成人精品免费看| 成人晚上爱看视频| 91美女在线观看| 欧美男生操女生| 精品国产一区二区三区久久影院 | 亚洲乱码国产乱码精品精98午夜| 综合欧美一区二区三区| 久久99精品久久久| 国产精品1区二区.| 91在线一区二区三区| 欧美在线小视频| 日韩视频国产视频| 国产精品你懂的| 亚洲一区二区中文在线| 久久成人免费电影| av欧美精品.com| 欧美亚洲国产一区在线观看网站| 欧美精品一二三| 久久精品欧美一区二区三区不卡 | 欧美国产精品一区| 亚洲素人一区二区| 亚洲成人先锋电影| 国内精品嫩模私拍在线| www.66久久| 在线综合视频播放| 久久久99精品久久| 亚洲大片在线观看| 成人小视频在线| 欧美揉bbbbb揉bbbbb| 国产亚洲女人久久久久毛片| 亚洲欧美日韩在线| 免费看欧美美女黄的网站| 成人91在线观看| 91精品国产综合久久福利| 中文无字幕一区二区三区 | 一区二区三区在线免费| 久久精品99国产国产精| 91免费观看视频在线| 精品国产1区二区| 亚洲高清免费视频| 国产69精品久久777的优势| 欧美日韩高清不卡| 国产精品嫩草影院com| 蜜桃一区二区三区在线| 91老师片黄在线观看| 久久久精品黄色| 免费久久精品视频| 欧美日精品一区视频| 中文字幕在线不卡视频| 国产原创一区二区三区| 91精品在线一区二区| 亚洲欧美乱综合| 福利一区二区在线| 欧美精品一区二区三区蜜臀| 亚洲成人福利片| 色综合久久综合网| 国产精品国模大尺度视频| 国产一区日韩二区欧美三区| 欧美一级在线免费| 天堂一区二区在线| 欧美主播一区二区三区| 17c精品麻豆一区二区免费| 国产不卡免费视频| 久久久国产综合精品女国产盗摄| 人人爽香蕉精品| 91精品国产色综合久久| 午夜欧美一区二区三区在线播放| 欧美性一二三区| 亚洲一区精品在线| 欧美午夜理伦三级在线观看| ...xxx性欧美| eeuss鲁片一区二区三区在线看| 国产日韩成人精品| 国产精品一区一区三区| 国产欧美日韩亚州综合| 国产精品资源在线观看| 久久久久久免费| 国产一区二区福利| 久久青草欧美一区二区三区| 久久不见久久见免费视频7| 精品精品国产高清一毛片一天堂| 蜜臀久久99精品久久久画质超高清| 欧美日韩激情一区| 日韩国产欧美在线视频| 日韩免费看网站| 国内精品视频一区二区三区八戒| 久久一日本道色综合| 久久99久久精品| 久久久精品一品道一区| 成人精品视频一区二区三区尤物| 欧美国产成人精品| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 国产日韩欧美制服另类| 国产老肥熟一区二区三区| 中文字幕不卡一区| 色综合欧美在线视频区| 午夜精品成人在线视频| 欧美电视剧免费观看| 国产乱理伦片在线观看夜一区| 国产精品久久福利| 欧美日韩成人综合在线一区二区| 免费看黄色91| 中文字幕精品—区二区四季| 色欧美片视频在线观看在线视频| 亚洲综合免费观看高清在线观看| 91精品午夜视频| 国产精品中文字幕日韩精品| 最新高清无码专区| 在线播放中文字幕一区| 国产精品白丝jk白祙喷水网站| 国产精品福利影院| 3d成人h动漫网站入口|