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

Python實現(xiàn)多圖片格式(PNG/JPG/SVG)到幻燈片的批量轉(zhuǎn)換

 更新時間:2025年11月17日 09:53:56   作者:SunnyDays1011  
這篇文章主要介紹了Python實現(xiàn)多圖片格式(PNG/JPG/SVG)到幻燈片的批量轉(zhuǎn)換,這篇文章將詳細介紹如何使用 Python 將各種圖片轉(zhuǎn)換為 PPT 幻燈片,需要的可以了解下

引言

在制作演示文稿時,想必大家常常需要將各種格式的圖片插入到 PPT 中。雖然手動操作不算難,但如果要處理大量的圖片,任務(wù)就變得非常繁瑣了。而借助 Python,我們可以輕松實現(xiàn)將圖片批量轉(zhuǎn)換為 PPT 幻燈片。

這篇文章將詳細介紹如何使用 Python 將各種圖片轉(zhuǎn)換為 PPT 幻燈片,甚至批量處理多個圖片,同時確保圖片質(zhì)量不受損。

本文主要涵蓋的內(nèi)容如下:

  • 將單張 PNG 或 JPG 圖片轉(zhuǎn)換為 PPT 幻燈片,并保持圖片的原始大小
  • 自定義幻燈片的大小和圖片的位置
  • 批量將多個 PNG 或 JPG 圖片轉(zhuǎn)換為獨立的幻燈片
  • 自定義每張幻燈片上的圖片數(shù)量
  • 將 SVG 圖片轉(zhuǎn)換為可編輯的 PPT 形狀

安裝必要的庫

要使用 Python 將圖片轉(zhuǎn)換為 PPT,需要安裝一個支持處理演示文稿的庫。本文使用 Spire.Presentation for Python,該庫支持生成PPT文檔以及對PPT文檔進行多種操作,包括插入圖片,調(diào)整幻燈片大小,將PPT文檔保存為PDF、圖片格式等,而且不需要運行環(huán)境安裝 Microsoft PowerPoint。

安裝方法

在程序終端中運行以下命令,即可安裝該庫:

pip install Spire.Presentation

安裝完成后,就可以使用該庫提供的接口來實現(xiàn)各種圖片轉(zhuǎn)PPT需求了。

1. 將單個 PNG 或 JPG 圖片轉(zhuǎn)換為 PPT 幻燈片

1.1 生成與圖片尺寸匹配的幻燈片

將圖片轉(zhuǎn)換為 PPT 幻燈片時,保持圖片的原始分辨率和比例非常重要。為了避免圖片被拉伸或失真,我們可以通過設(shè)置幻燈片的尺寸與圖片尺寸一致來實現(xiàn)這一點。

代碼示例

from spire.presentation import *

# 創(chuàng)建 PPT 演示文稿對象
presentation = Presentation()

# 刪除默認幻燈片
presentation.Slides.RemoveAt(0)

# 加載圖片
imagePath = r"C:\Users\Administrator\Downloads\Images\1.png"
stream = Stream(imagePath)
imageData = presentation.Images.AppendStream(stream)
stream.Close()

# 獲取圖片尺寸
imageWidth = float(imageData.Width)
imageHeight = float(imageData.Height)

# 設(shè)置幻燈片尺寸與圖片一致
presentation.SlideSize.Type = SlideSizeType.Custom
presentation.SlideSize.Size = SizeF(imageWidth, imageHeight)

# 添加新幻燈片
slide = presentation.Slides.Append()

# 插入圖片
rect = RectangleF(0.0, 0.0, imageWidth, imageHeight)
pptImage = slide.Shapes.AppendEmbedImageByImageData(ShapeType.Rectangle, imageData, rect)
pptImage.Line.FillType = FillFormatType.none

# 保存演示文稿
presentation.SaveToFile("單張圖片轉(zhuǎn)PPT.pptx", FileFormat.Pptx2013)
presentation.Dispose()

輸出效果

圖片填滿整個幻燈片,且保持原始尺寸和比例:

1.2 自定義幻燈片大小和圖片位置

在某些情況下,你可能希望使用固定的幻燈片大?。ㄈ?16:9 寬屏或 A4 比例),而不是完全匹配圖片的尺寸。這種方法有助于保持演示文稿的統(tǒng)一風格。同時你還可以控制圖片的位置,例如,將圖片居中或放在指定的邊距內(nèi)。

以下示例展示了如何:

  • 設(shè)置固定的幻燈片大小
  • 在圖片周圍添加邊距
  • 將圖片居中顯示

代碼示例

from spire.presentation import *

# 創(chuàng)建新的 PowerPoint 演示文稿
presentation = Presentation()

# 刪除默認的第一張幻燈片
presentation.Slides.RemoveAt(0)

# 加載圖片
imagePath = r"C:\Users\Administrator\Downloads\Images\1.png"
stream = Stream(imagePath)
imageData = presentation.Images.AppendStream(stream)
stream.Close()

# 設(shè)置標準的 16:9 寬屏幻燈片尺寸
presentation.SlideSize.Type = SlideSizeType.Screen16x9
slide = presentation.Slides.Append()

# 獲取幻燈片和圖片的尺寸
slideWidth = presentation.SlideSize.Size.Width
slideHeight = presentation.SlideSize.Size.Height
imgWidth = float(imageData.Width)
imgHeight = float(imageData.Height)

# 設(shè)置邊距
margin = 30.0

# 按比例縮放圖片以適應(yīng)幻燈片邊距
scale = min((slideWidth - 2 * margin) / imgWidth, (slideHeight - 2 * margin) / imgHeight)
scaledWidth = imgWidth * scale
scaledHeight = imgHeight * scale

# 將圖片居中顯示
x = (slideWidth - scaledWidth) / 2
y = (slideHeight - scaledHeight) / 2

# 插入圖片
rect = RectangleF(x, y, scaledWidth, scaledHeight)
pptImage = slide.Shapes.AppendEmbedImageByImageData(ShapeType.Rectangle, imageData, rect)
pptImage.Line.FillType = FillFormatType.none

# 保存演示文稿
presentation.SaveToFile("自定義幻燈片大小和圖片位置.pptx", FileFormat.Pptx2013)
presentation.Dispose()

輸出效果

圖片被按比例縮放并居中顯示,同時保持幻燈片的 16:9 寬屏比例,且圖片與幻燈片邊緣保持一定的邊距。

2. 批量將多張 PNG 或 JPG 圖片轉(zhuǎn)換為 PPT 幻燈片

2.1 為每張圖片生成單獨的幻燈片

如果你有多張 PNG 或 JPG 圖片(如產(chǎn)品照片或掃描文檔頁面),你可以批量將它們自動轉(zhuǎn)換為 PPT,每張圖片對應(yīng)一張幻燈片,且每張幻燈片的尺寸自動與圖片的尺寸匹配,確保圖片保留原始比例。

代碼示例

import os
from spire.presentation import *

# 創(chuàng)建新的 PowerPoint 演示文稿
presentation = Presentation()

# 刪除默認的幻燈片
presentation.Slides.RemoveAt(0)

# 定義圖片文件夾路徑
baseDir = r"C:\Users\Administrator\Downloads\Images"

# 獲取文件夾中的所有圖片文件
picFiles = [f for f in os.listdir(baseDir) if os.path.isfile(os.path.join(baseDir, f))]

# 遍歷所有圖片文件
for picFile in picFiles:
    # 添加新幻燈片
    slide = presentation.Slides.Append()

    # 加載圖片
    imagePath = os.path.join(baseDir, picFile)
    stream = Stream(imagePath)
    imageData = presentation.Images.AppendStream(stream)
    stream.Close()

    # 設(shè)置幻燈片尺寸與圖片尺寸匹配
    imageWidth = float(imageData.Width)
    imageHeight = float(imageData.Height)
    presentation.SlideSize.Type = SlideSizeType.Custom
    presentation.SlideSize.Size = SizeF(imageWidth, imageHeight)

    # 插入圖片
    rect = RectangleF(0.0, 0.0, imageWidth, imageHeight)
    pptImage = slide.Shapes.AppendEmbedImageByImageData(ShapeType.Rectangle, imageData, rect)
    pptImage.Line.FillType = FillFormatType.none

# 保存演示文稿
presentation.SaveToFile("MultipleImagesToPPT.pptx", FileFormat.Pptx2013)
presentation.Dispose()

輸出效果

最終生成的 PPT文件包含多個幻燈片,每張幻燈片顯示一張圖片。

2.2 自定義每頁幻燈片中的圖片數(shù)量

在實際使用場景中,你可能需要將多張圖片添加到單個幻燈片中,以便高效地比較或展示圖片數(shù)據(jù)。要實現(xiàn)這一點,我們可以將幻燈片劃分為網(wǎng)格,然后將圖片放置在相應(yīng)的網(wǎng)格單元格中。

例如:

  • 每頁 2 張圖片:劃分為一個簡單的 1x2 網(wǎng)格(兩張圖片并排排列)。
  • 每頁 4 張圖片:劃分為一個 2x2 網(wǎng)格(四張圖片排列成兩行兩列)。
  • 每頁 6 張圖片:劃分為一個 2x3 網(wǎng)格(六張圖片排列成兩行三列)。

根據(jù)每頁要顯示的圖片數(shù)量,動態(tài)調(diào)整網(wǎng)格布局,這樣可以確保圖片均勻分布,布局整潔且一致。

代碼示例

以下示例展示了如何將每個幻燈片劃分為網(wǎng)格,并根據(jù)每頁幻燈片的圖片數(shù)量(例如 2張或4張)將圖片放置到每個網(wǎng)格單元格中。圖片會自動縮放以適應(yīng)分配的單元格,并且幻燈片的布局會相應(yīng)調(diào)整。

import os
from spire.presentation import *

def add_images_to_slide(slide, image_files, images_per_slide, slide_width, slide_height, margin=20.0):
    """
    該函數(shù)根據(jù)指定的網(wǎng)格布局(例如每頁 2 張、4 張或更多圖片)將圖片添加到幻燈片。
    """
    # 計算網(wǎng)格的行數(shù)和列數(shù)
    columns = int(images_per_slide ** 0.5)  # 列數(shù)(每頁圖片數(shù)量的平方根)
    rows = (images_per_slide + columns - 1) // columns  # 計算行數(shù)

    # 計算每個圖片的寬度和高度
    cell_width = (slide_width - 2 * margin) / columns
    cell_height = (slide_height - 2 * margin) / rows

    # 遍歷圖片并將它們放置到網(wǎng)格中
    for i in range(images_per_slide):
        if i >= len(image_files):
            break  # 防止超出可用圖片的數(shù)量

        # 加載圖片
        image_path = os.path.join(baseDir, image_files[i])
        stream = Stream(image_path)
        image_data = presentation.Images.AppendStream(stream)
        stream.Close()

        # 獲取圖片的尺寸
        image_width = float(image_data.Width)
        image_height = float(image_data.Height)

        # 縮放圖片以適應(yīng)單元格
        scale = min(cell_width / image_width, cell_height / image_height)
        scaled_width = image_width * scale
        scaled_height = image_height * scale

        # 計算圖片在網(wǎng)格中的位置(x, y)
        row = i // columns
        col = i % columns
        x = margin + col * cell_width + (cell_width - scaled_width) / 2  # 在單元格中水平居中
        y = margin + row * cell_height + (cell_height - scaled_height) / 2  # 在單元格中垂直居中

        # 插入圖片
        rect = RectangleF(x, y, scaled_width, scaled_height)
        ppt_image = slide.Shapes.AppendEmbedImageByImageData(ShapeType.Rectangle, image_data, rect)
        ppt_image.Line.FillType = FillFormatType.none

# 創(chuàng)建一個新的演示文稿
presentation = Presentation()

# 刪除默認幻燈片
presentation.Slides.RemoveAt(0)

# 定義圖片文件夾路徑
baseDir = r"C:\Users\Administrator\Downloads\Images"

# 獲取文件夾中的所有文件
image_files = [f for f in os.listdir(baseDir) if os.path.isfile(os.path.join(baseDir, f))]

# 定義每頁幻燈片中圖片的數(shù)量(2、4、6 等)
images_per_slide = 4  # 可以根據(jù)需要調(diào)整此值為 2、4、6 等

# 遍歷圖片并將它們添加到幻燈片中
for i in range(0, len(image_files), images_per_slide):
    # 添加新的幻燈片
    slide = presentation.Slides.Append()

    # 獲取本頁幻燈片的圖片
    add_images_to_slide(slide, image_files[i:i + images_per_slide], images_per_slide,
                        presentation.SlideSize.Size.Width, presentation.SlideSize.Size.Height)

# 保存演示文稿
presentation.SaveToFile("MultipleImagesPerSlide.pptx", FileFormat.Pptx2013)
presentation.Dispose()

輸出效果:

生成的 PPT 幻燈片根據(jù)圖片數(shù)量劃分為相應(yīng)的網(wǎng)格布局。每個網(wǎng)格中將放置一張圖片,且圖片自動縮放以適應(yīng)網(wǎng)格尺寸:

關(guān)于行數(shù)和列數(shù)計算方法說明:

1. 列數(shù) (columns) 計算方法:

columns = int(images_per_slide ** 0.5)

這里使用了平方根 images_per_slide ** 0.5,是因為如果每一列的數(shù)量相等,形成一個近似的正方形布局,平方根可以給出合適的列數(shù)。例如:

如果每張幻燈片有 4 張圖片,sqrt(4) = 2,那么可以采用 2 列 2 行的布局。

如果有 6 張圖片,sqrt(6) 約等于 2.45,所以 int(2.45) 將列數(shù)取為 2。

2. 行數(shù) (rows) 計算方法:

rows = (images_per_slide + columns - 1) // columns

這行代碼計算所需的行數(shù)。公式 (images_per_slide + columns - 1) // columns 之所以這樣設(shè)計,是為了確保足夠的行數(shù):

images_per_slide 是總的圖片數(shù)量。

columns 是已計算出的列數(shù)。

+ columns - 1 是為了向上取整,從而避免因整除導致圖片數(shù)量不足的情況。例如:

如果有 6 張圖片,columns 為 2,計算行數(shù)時:

rows = (6 + 2 - 1) // 2 = 7 // 2 = 3,實際上只需要 3 行來放置圖片。

3. 將 SVG 圖片轉(zhuǎn)換為可編輯的PPT形狀

與 PNG 和 JPG 等位圖格式不同,SVG 文件是矢量圖,因此它可以在不失真的情況下無限放大。在 PowerPoint 中,我們可以將 SVG 圖片作為可編輯的形狀插入,保留其清晰度并且能夠隨時進行修改(如組合、設(shè)置顏色、調(diào)整大小等)。

代碼示例

from spire.presentation import *

# 創(chuàng)建 PowerPoint 演示文稿對象
presentation = Presentation()

# 定義 SVG 文件路徑
SvgFile = r"C:\Users\Administrator\Downloads\Images\Sample.svg"

# 將 SVG 文件插入為可編輯的 PowerPoint 形狀
presentation.Slides[0].Shapes.AddFromSVGAsPicture(SvgFile)

# 保存演示文稿
presentation.SaveToFile("SVG轉(zhuǎn)PPT.pptx", FileFormat.Pptx2013)
presentation.Dispose()

總結(jié)

本文詳細介紹了如何使用 Python 將不同格式的圖片,如 PNG、JPG 和 SVG, 批量轉(zhuǎn)換為 PPT 幻燈片。文章涵蓋了以下幾個關(guān)鍵點:

  • 單張圖片轉(zhuǎn)換:將單張 PNG 或 JPG 圖片轉(zhuǎn)換為 PPT 幻燈片,保持圖片原始大小,或自定義幻燈片的尺寸和圖片位置。
  • 批量轉(zhuǎn)換:批量將多張 PNG 或 JPG 圖片轉(zhuǎn)換為多個幻燈片,并根據(jù)需要調(diào)整每張幻燈片上圖片的數(shù)量,例如按網(wǎng)格布局排列。
  • SVG 轉(zhuǎn)換:將 SVG 文件轉(zhuǎn)換為 PowerPoint 可編輯的圖形,保留圖片的高質(zhì)量和可編輯性。

到此這篇關(guān)于Python實現(xiàn)多圖片格式(PNG/JPG/SVG)到幻燈片的批量轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)Python圖片轉(zhuǎn)PPT內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 對python中的乘法dot和對應(yīng)分量相乘multiply詳解

    對python中的乘法dot和對應(yīng)分量相乘multiply詳解

    今天小編就為大家分享一篇對python中的乘法dot和對應(yīng)分量相乘multiply詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • python3 scrapy框架的執(zhí)行流程

    python3 scrapy框架的執(zhí)行流程

    Scrapy的安裝有多種方式,它支持Python2.7版本及以上或Python3.3版本及以上。下面說明python3 scrapy框架的常用命令及框架執(zhí)行流程,感興趣的朋友一起看看吧
    2021-07-07
  • keras 簡單 lstm實例(基于one-hot編碼)

    keras 簡單 lstm實例(基于one-hot編碼)

    這篇文章主要介紹了keras 簡單 lstm實例(基于one-hot編碼),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • python循環(huán)監(jiān)控遠程端口的方法

    python循環(huán)監(jiān)控遠程端口的方法

    這篇文章主要介紹了python循環(huán)監(jiān)控遠程端口的方法,涉及Python實現(xiàn)端口監(jiān)控的技巧,需要的朋友可以參考下
    2015-03-03
  • Python3 pickle模塊的使用方法詳細介紹

    Python3 pickle模塊的使用方法詳細介紹

    pickle提供了一個簡單的持久化功能??梢詫ο笠晕募男问酱娣旁诖疟P上,pickle序列化后的數(shù)據(jù),可讀性差,人一般無法識別,本文詳細介紹了pickle模塊的使用方法
    2021-10-10
  • Django頁面數(shù)據(jù)的緩存與使用的具體方法

    Django頁面數(shù)據(jù)的緩存與使用的具體方法

    這篇文章主要介紹了Django頁面數(shù)據(jù)的緩存與使用的具體方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • pytorch繪制曲線的方法

    pytorch繪制曲線的方法

    這篇文章主要為大家詳細介紹了pytorch繪制曲線的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • Django 中自定義 Admin 樣式與功能的實現(xiàn)方法

    Django 中自定義 Admin 樣式與功能的實現(xiàn)方法

    這篇文章主要介紹了Django 中自定義 Admin 樣式與功能的實現(xiàn)方法,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-07-07
  • 使用Python編輯PDF文檔的操作指南

    使用Python編輯PDF文檔的操作指南

    在日常工作中,編輯PDF文件是一個常見且必不可少的需求,常見的任務(wù)包括修改文檔中的文本、插入圖片、更新元數(shù)據(jù),甚至對頁面進行調(diào)整等,在這篇文章中,我們將詳細介紹如何使用Python來編輯PDF文檔,需要的朋友可以參考下
    2025-10-10
  • Python中讀寫壓縮數(shù)據(jù)文件的方法完全指南

    Python中讀寫壓縮數(shù)據(jù)文件的方法完全指南

    在現(xiàn)代數(shù)據(jù)密集型應(yīng)用中,壓縮文件處理是每個Python開發(fā)者必須掌握的關(guān)鍵技能,本文將深入解析Python壓縮文件讀寫的相關(guān)方法,有需要的小伙伴可以了解下
    2025-09-09

最新評論

依安县| 全椒县| 田东县| 垦利县| 舟山市| 曲阳县| 高尔夫| 株洲县| 通许县| 彰化市| 崇阳县| 循化| 改则县| 崇文区| 黄梅县| 灵丘县| 通城县| 平远县| 碌曲县| 无为县| 翁牛特旗| 巩义市| 平武县| 巴塘县| 西盟| 海林市| 台安县| 皮山县| 卓资县| 平乐县| 邛崃市| 青岛市| 大厂| 于田县| 普陀区| 湟源县| 陆河县| 巴彦淖尔市| 丹棱县| 博野县| 鹰潭市|