PPT批量製作封面圖及導出視頻教程

2021-12-23 進階的大前端
前言

距離運營人員提出PPT,word自動轉圖片沒多久後。有天運營跑過來說道,能不能自動生成封面圖,以及視頻。因為每次手動一個一個打開PPT再用islide導出封面圖工作很繁瑣,效率也不高。有了上次寫PPT,word自動轉圖片的慄子,這次寫起來也十分順手了。

本文python版本3.9.5需windows 平臺,需安裝Microsoft Office

腳本思路

python讀取目錄下的PPT->打開PPT->導出圖片->拿到圖片拼接製作封面圖。先來看看運營要求的封面圖,讀取PPT的前7張,第一張寬度鋪滿,第二張開始等比分配

拿到PPT集合
def getPpt():
     files = os.listdir("./"+pptFilePath)
     return files

刪除文件夾
def removeFileInFirstDir(targetDir):
    for file in os.listdir(targetDir): 
        targetFile = os.path.join(targetDir,  file) 
        if os.path.isfile(targetFile): 
            os.remove(targetFile)

PPT轉圖片順便把視頻也轉出來
def ppt2png(ppt_path,powerpoint,fileName):
    try:
        ppt = powerpoint.Presentations.Open(ppt_path)
        #保存為圖片
        img_path = os.path.abspath(imgFilePath + '.png')
        ppt.SaveAs(img_path, 18) # 17保存為jpg格式
         # quality:0-100. The level of quality of the slide. The higher the number, the higher the quality.
        quality = 60
        # resolution:The resolution of the slide. 480,720,1080...
        resolution = 720
        # frames: The number of frames per second.
        frames = 24
        mp4_target = os.path.abspath('./ppt/'+fileName+'.mp4')
        print(mp4_target)
        print(fileName,"----正在轉成視頻")
        ppt.CreateVideo(mp4_target,-1,1,resolution,frames,quality)
        while True:
            try:
                time.sleep(0.1)
                if os.path.exists(mp4_target) and os.path.getsize(mp4_target) == 0:
                    # The filesize is 0 bytes when convert do not complete.
                    continue
                break
            except Exception as e:
                print (e)
                break
        # 關閉打開的ppt文件
        ppt.Close()
    except IOError:
        print('PPT轉png失敗',ppt_path)
    else:
        print('\n')
        print('\n')
        print("PPT轉png成功",ppt_path)

圖片拼接成封面圖
def getCover(fileName):
    # 封面圖  w 1012 h 1431 空白6 
    w = 1012
    h = 1431
    padding = 6
    toImage = Image.new('RGB',(w,h),"#E6F5FF") # #E6F5FF填充背景
    files = os.listdir("./"+imgFilePath)
    files.sort(key = lambda x : int(x.split('.')[0][3:])) #使用sort進行按順序讀取
    for index,value in enumerate(files):
        if(index <7 ):
            _path = os.path.abspath('./img/'+value)
            pic_fole_head = Image.open(_path)
            # 獲取圖片的尺寸
            if(index==0):
                #第一張圖片寬度鋪滿 1012 - 6 -6 ,高度561 
                # 按照指定的尺寸,給圖片重新賦值,<PIL.Image.Image image mode=RGB size=200x200 at 0x127B7978>
                tmppic = pic_fole_head.resize((w - padding * 2, 561))
                # 計算每個圖片的左上角的坐標點(0, 0)
                loc = (6,6)
                toImage.paste(tmppic, loc)
            else:
                # 按照指定的尺寸,給圖片重新賦值,<PIL.Image.Image image mode=RGB size=200x200 at 0x127B7978>
                # w = 1012
                # h = 1431
                # padding = 6
                smallW  = int((1012 - padding * 3 ) / 2 )
                tmppic = pic_fole_head.resize((smallW, 280))
                # 計算每個圖片的左上角的坐標點(0, 0),(200, 0),(200, 200)
                line = math.ceil(index/2) #計算處於第幾行
                x = 6 
                if(index % 2 ==0):
                    x = smallW + padding * 2
                loc = (int(x ), int((line-1) * 280 + 561 + (line+1)* 6))
                toImage.paste(tmppic, loc)
    toImage.save("./ppt/"+fileName+'.png')
    print(fileName+'封面生成成功')

初始化PPT
def init_powerpoint():
    powerpoint = win32com.client.Dispatch('PowerPoint.Application') #comtypes.client.CreateObject("Powerpoint.Application")
    powerpoint.Visible = 1
    return powerpoint

最後調用
if __name__=='__main__':
    powerpoint = init_powerpoint()
    pptArr = getPpt()
    print('---pptArr--',pptArr)
    for index,value in enumerate(pptArr):
        if(('.ppt' in value) ==True):
            removeFileInFirstDir('./'+imgFilePath)
            _path = os.path.abspath('./ppt/'+value)
            fileName = os.path.basename(_path).split('.')[0]
            ppt2png(_path,powerpoint,fileName)
            getCover(fileName)
        time.sleep(2)
    powerpoint.Quit()
    # removeFileInFirstDir('./'+imgFilePath)
    input("輸入任意鍵結束")

運行後的封面圖及視頻

最後打包成exe文件給運營人員用就可以了
pyinstaller -c -F -i a.ico index.py 

結尾

歡迎關注

相關焦點

  • 【教程資源】ps/ppt/flash動畫製作視頻教程 手繪動畫設計gif動圖教學在線課程
    ps/ppt/flash動畫製作視頻教程 手繪動畫設計gif動圖教學在線課程《需要的可以找我,你就可以擁有這個課程》微信:nhy336
  • 怎麼在每張ppt上加logo ppt中批量添加logo的教程
    ppt作為我們在辦公時經常要用到的工具,可以幫助我們製作豐富精美的幻燈片。可是如果在製作時遇到了需要每張ppt上都加logo的情況,一張一張添加很是麻煩,那我們有什麼辦法可以一次性加好呢?其實我們可以通過批量添加的方式來解決,那麼對此今天本文就來為大家分享關於ppt中批量添加logo的教程。
  • 比較有創意的PPT封面和結束語如何製作?
    比較有創意的PPT封面如何製作?比較有創意的ppt封面如何製作?下面小編就來演示一下,都是模仿其他優秀的ppt,然後從中吸取到自己需要的進行模仿。1.導入圖片素材,一般是一個風景建築照片。比較有創意的PPT結尾如何製作?比較有創意的ppt結尾如何製作呢?我們都是模仿其他優秀的作品,下面小編就來製作一個。1.首先我們在幻燈片中插入一個矩形,填充為黑色,去掉邊框。2.然後點擊插入,插入一個圖文框。
  • 《I Love Img》在線批量無損壓縮gif png jpg圖片(附視頻教程)
    在線直達地址:https://www.iloveimg.com/zh-cn/compress-imageI Love Img提供了在線批量壓縮圖片的免費服務, 它會自動根據圖片特徵自動選擇壓縮參數, 為圖片減肥的同時,又不損失畫質,是真正的傻瓜級應用。
  • 如何打造PPT中可用的筆畫素材?我手把手教你啊!
    如何大量製作筆畫素材 上周分享的筆畫素材,一共有 800 張,實際上已經非常多了。 需要一張張筆畫寫好,每個筆畫還不能一樣,寫得不合適要重寫,寫完後還需要導出做成矢量圖,並整理到 PPT 中發布出來。
  • CAD如何批量導出文字並編輯
    很多時候,我們需要對CAD中文字進行批量複製,粘貼到文本,word, excel中!如上圖,如何我們一行一行文字的進行複製粘貼,是非常耗時耗力的!如下圖!圖片是無法編輯的!那麼,如何把這些單行文字複製到Word或者Excel中打開,並進行編輯呢?這裡總結了三種方法!
  • 封面!封面!PPT封面製作秘籍
    一張優秀的 PPT 封面能瞬間吸引住觀眾的注意力。很多時候,PPT 只需要一張封面,就能 CARRY 全場。這些封面有沒有瞬間吸引你的眼球呢?反正當我第一次看見的時候,立馬給跪了。那時的我真的不知道大神們是怎麼做出這些封面的。可是當我看過1000+頁封面後,這些PPT似乎也沒有那麼難。
  • 用PPT製作自己的微信紅包封面
    沒看錯,PPT就可以輕鬆製作。注意,下方有一個限時活動·製作自己的紅包封面。滿足條件後,也可以在發紅包的時候,會出現紅包封面選擇,往右滑,就會看到限時紅包封面製作活動,點擊進去。接下來就是最關鍵的步驟,製作圖片。我試了好幾個尺寸類型的圖片,發現要想做出不遮擋且能合理表達意圖的微信封面,尺寸很重要,因為尺寸如果長寬比例不合適,微信會自動裁剪圖片,導致我們想露出來的部分被遮擋。
  • 微信聊天記錄圖片如何批量導出電腦
    一些微信私聊或群聊中收發了大量圖片,因為工作需要,需要將其批量導出到電腦,一張一張進行選擇再轉發的話,不但操作麻煩,還有可能漏掉個別重要圖片。參照本文的步驟進行導出後,不但可以一次導出所有微信聊天圖片,並且導出的圖片按收發順序,以數字命名進行了排序。
  • 用PPT製作電子手帳的封面教程(Burberry主題哦)
    (可能真的有,這點沒有考證過)只要搜集Burberry的經典素材,我就可以自己動手製作我的BURBEERY筆記本了。不僅省錢,重要的是獨一無二啊。於是立即動手搜集了Burberry的經典素材,並先從筆記的封面做起。By the way,邊做邊試著寫了下教程,有興趣的小夥伴可以收藏了有時間製作看看哈。
  • ppt中的信息圖
    一、什麼是信息圖信息圖表又稱信息圖,是指數據、信息或知識的可視化展示形式。信息圖在ppt中被廣泛運用,其種類有很多,大致可分為四大類:統計圖表、示意圖表、界面圖標、地圖圖表。二、如何製作信息圖1.製作流程製作信息圖的一般流程是:收集信息——確認風格——草圖繪製——反覆優化2.三種必備能力除技術能力外
  • 課程網頁設計視頻教程,課堂logo設計教程
    更多構崑山平面設計教程成國慶主題海報教程優秀案例作品,敬請關注字南京可愛包裝設計平面圖教程網頁設計製作教程體教程團隊。平面設計初級教程入門  王設計者榮平面設計繪畫教程耀巧克力包裝袋教程ui c網頁視頻教程雲纓凌雲《中國槍,平面ps印刷海報設計談單教程掠如火彩繪教程!》
  • (免費)82套文藝清新PPT模板
    手繪微課製作軟體視頻教程手繪微課製作軟體中文視頻教程23講(著名的臺灣林偉老師主講)微課製作片頭片尾資源>專題片宣傳片背景音樂(2.1G大容量百度雲下載)特效音庫:配音必備的2000個音效打包下載片頭音樂合集1600多個片頭常用音樂多種風格的背景音樂素材合集169首扁平化配樂精選PPT製作視頻教程跟我學ppt該這樣做PPT製作視頻高清教程48課PPT速成視頻課送
  • 職場不求人,原來PPT轉換圖片這麼簡單
    將PPT文件,批量輸出為圖片在PPT當中,其實是可以批量將全部的PPT頁面轉換為圖片的。首先我們點擊【文件】-【另存為】,將文件另存為。選擇要存儲的位置,然後在【文件類型】當中,選擇【JPG格式】,最後點擊保存即可。
  • PPT幻燈片中如何加入計時秒鐘插件
    利用FLASH製作一個倒計時的效果,然後導入到ppt裡直接用,這就需要朋友們會製作動畫了。  做好之後就要把文件導出,變成ppt能夠調用,點擊「文件」菜單——「導出」——「導出影片」,記得是GIF格式。
  • 如何快速將PPT導出圖片?方法很簡單!
    今天小艾就為大家分享如何在PPT中批量快速導出圖片,提升你的工作效率01 PowerPoint打開已完成的PPT,在「文件」中選擇「另存為」,格式選擇 「jpg」或是 「導出的幻燈片就全部變成「圖片」02 PPT插件iSlide打開 iSlide 導出,點擊「導出」下拉菜單,選擇「導出圖片」2.
  • 親測,最近一直在用的PPT製作軟體超級實用,非常好用!
    軟體內自帶素材庫,支持直接套用模板,也可導入ppt/多張圖片新建項目;支持插入音/視頻、SVG等,Windows和mac作業系統皆能使用,多種輸出格式,常見的mp4/exe/html等。
  • 如此漂亮的封面圖,你會製作嗎?
    有時封面可以使整個文檔變得更加形象、大氣,那你知道如何製作一個漂亮的封面嗎?本期Word妹教你用Word製作一張好看的封面!
  • PPT動圖製作入門
    製作動圖以後,很多小夥伴都是一臉的懵比-PS雖然是一個功能無比強大的軟體,但受制於熟練度與專業性,很多小夥伴表示臣妾做不到啊……於是我介紹了Gifcam給他們,可是又被吐槽受制於素材……好吧,既然你們如此任性……那麼今天我就帶大家學習一個更加簡單實用的製作動圖的方法……本文作者:黑眼荃荃轉載自:黑眼荃荃想必大家也知道
  • Image J處理各種SCI圖視頻教程免費送!
    也就是用SPSS、origin等做好的統計圖,PS處理好的實驗圖,然後導入AI裡面組合好;最後導出矢量圖或者位圖,用於投稿。那,組合圖好之後,最後我們就需要導出,AI導出的時候,不同的期刊對圖片的大小、格式、色彩模式、解析度等均有要求。如下: