Chuyển đổi các slide trình chiếu sang hình ảnh trong Python

Giới thiệu

Aspose.Slides for Python via .NET có thể render các trang slide riêng lẻ từ bản trình bày PowerPoint và OpenDocument dưới dạng PNG, JPEG, GIF, TIFF và các định dạng hình ảnh khác.

Để chuyển đổi một slide thành hình ảnh, thực hiện các bước sau:

  1. Tải bản trình bày bằng lớp Presentation.
  2. Chọn slide mà bạn muốn render.
  3. Nếu cần, cấu hình việc render bằng lớp RenderingOptions hoặc TiffOptions.
  4. Gọi phương thức Slide.get_image. Nó trả về một đối tượng IImage.
  5. Gọi phương thức IImage.save và chỉ định định dạng đầu ra bằng giá trị ImageFormat.

Chuyển đổi Slide sang ảnh PNG

Cách chuyển đổi đơn giản nhất sử dụng cài đặt render mặc định. Đối tượng IImage kết quả có thể được xử lý trong bộ nhớ hoặc lưu vào tệp.

Ví dụ Python sau render slide đầu tiên và lưu nó dưới dạng ảnh PNG:

import aspose.slides as slides

with slides.Presentation("Presentation.pptx") as presentation:
    slide = presentation.slides[0]

    with slide.get_image() as image:
        image.save("Slide_0.png", slides.ImageFormat.PNG)

Chuyển đổi Slides sang ảnh với kích thước tùy chỉnh

Sử dụng phương thức overload Slide.get_image chấp nhận giá trị Size để render slide với kích thước pixel chính xác.

Ví dụ sau tạo ảnh JPEG kích thước 1820 × 1040:

import aspose.pydrawing as draw
import aspose.slides as slides

image_size = draw.Size(1820, 1040)

with slides.Presentation("Presentation.pptx") as presentation:
    slide = presentation.slides[0]

    with slide.get_image(image_size) as image:
        image.save("Slide_0.jpg", slides.ImageFormat.JPEG)

Chuyển đổi Slides có Ghi chú và Bình luận sang ảnh

Mặc định, ảnh slide không bao gồm ghi chú hoặc bình luận. Gán một đối tượng NotesCommentsLayoutingOptions cho thuộc tính RenderingOptions.slides_layout_options để kiểm soát vị trí hiển thị ghi chú và bình luận.

Ví dụ sau đặt ghi chú đã cắt ngắn bên dưới slide và bình luận sang bên phải:

import aspose.pydrawing as draw
import aspose.slides as slides

scale_x = 2
scale_y = scale_x

layout_options = slides.export.NotesCommentsLayoutingOptions()
layout_options.notes_position = slides.export.NotesPositions.BOTTOM_TRUNCATED
layout_options.comments_position = slides.export.CommentsPositions.RIGHT
layout_options.comments_area_width = 500
layout_options.comments_area_color = draw.Color.antique_white

rendering_options = slides.export.RenderingOptions()
rendering_options.slides_layout_options = layout_options

with slides.Presentation("Presentation_with_notes_and_comments.pptx") as presentation:
    slide = presentation.slides[0]

    with slide.get_image(rendering_options, scale_x, scale_y) as image:
        image.save("Image_with_notes_and_comments_0.gif", slides.ImageFormat.GIF)

Chuyển đổi Slides sang ảnh bằng tùy chọn TIFF

Lớp TiffOptions cho phép bạn kiểm soát kích thước, độ phân giải và các thuộc tính khác của ảnh TIFF đã render.

Ví dụ sau render slide đầu tiên thành ảnh TIFF kích thước 2160 × 2880 với độ phân giải 300 DPI:

import aspose.pydrawing as draw
import aspose.slides as slides

tiff_options = slides.export.TiffOptions()
tiff_options.image_size = draw.Size(2160, 2880)
tiff_options.dpi_x = 300
tiff_options.dpi_y = 300

with slides.Presentation("sample.pptx") as presentation:
    slide = presentation.slides[0]

    with slide.get_image(tiff_options) as image:
        image.save("output.tiff", slides.ImageFormat.TIFF)

Chuyển đổi Tất cả Slides sang ảnh

Duyệt qua bộ sưu tập slide để chuyển đổi toàn bộ bản trình bày thành một loạt ảnh. Các slide ẩn sẽ được bao gồm trừ khi bạn bỏ qua chúng một cách có chủ ý.

Ví dụ sau render mọi slide thành ảnh JPEG với hệ số tỷ lệ chiều ngang và chiều dọc là 2:

import aspose.slides as slides

scale_x = 2
scale_y = scale_x

with slides.Presentation("Presentation.pptx") as presentation:
    for index, slide in enumerate(presentation.slides):
        with slide.get_image(scale_x, scale_y) as image:
            image.save("Slide_{}.jpg".format(index), slides.ImageFormat.JPEG)

Tạo đầu ra Enhanced Metafile

Enhanced Metafile (EMF) hữu ích khi cần trao đổi đồ họa dựa trên vector với Microsoft Office hoặc các ứng dụng Windows khác hỗ trợ metafile Windows. Không giống như ảnh dựa trên pixel, EMF có thể giữ lại các thao tác vẽ vector mà không mất độ sắc nét khi phóng to. Tuy nhiên, EMF chủ yếu là định dạng tương thích cho các ứng dụng có hỗ trợ metafile Windows, không phải là định dạng trao đổi chung. Ngoài ra, nội dung slide phức tạp, chẳng hạn như ảnh bitmap và một số hiệu ứng, có thể được lưu dưới dạng các phần tử raster trong container metafile vector.

Xuất slide sang EMF

Phương thức Slide.write_as_emf ghi một Slide vào luồng mục tiêu ở định dạng EMF. Ví dụ sau tải một bản trình bày, chọn slide đầu tiên và ghi nó vào luồng tệp EMF:

import aspose.slides as slides

with slides.Presentation("Presentation.pptx") as presentation:
    slide = presentation.slides[0]

    with open("Slide_0.emf", "wb") as emf_stream:
        slide.write_as_emf(emf_stream)

Người gọi chịu trách nhiệm quản lý luồng được truyền cho Slide.write_as_emf và phải đóng luồng. Aspose.Slides ghi vào vị trí hiện tại của luồng và để luồng mở.

Chuyển đổi ảnh SVG sang EMF và thêm vào bản trình bày

Sử dụng SvgImage.write_as_emf để chuyển đổi nội dung SVG sang EMF. Các byte kết quả có thể được thêm vào bản trình bày qua ImageCollection.add_image và đặt lên slide bằng ShapeCollection.add_picture_frame.

Ví dụ sau tạo một SvgImage từ markup SVG, chuyển đổi nó thành EMF trong bộ nhớ, chèn metafile vào slide đầu tiên và lưu bản trình bày:

import io
import aspose.slides as slides

svg_content = '<svg xmlns="http://www.w3.org/2000/svg" width="200" height="100"><rect width="200" height="100" fill="#4472C4"/></svg>'
svg_image = slides.SvgImage(svg_content)

with slides.Presentation() as presentation:
    slide = presentation.slides[0]

    with io.BytesIO() as emf_stream:
        svg_image.write_as_emf(emf_stream)
        emf_data = emf_stream.getvalue()

    image = presentation.images.add_image(emf_data)
    slide.shapes.add_picture_frame(slides.ShapeType.RECTANGLE, 20, 20, 200, 100, image)

    presentation.save("Presentation_with_emf.pptx", slides.export.SaveFormat.PPTX)

SvgImage.write_as_emf không nắm quyền sở hữu luồng đích. Sau khi ghi, vị trí luồng sẽ ở cuối dữ liệu đã tạo. Gọi getvalue để lấy toàn bộ buffer bất kể vị trí hiện tại của luồng, như trong ví dụ trên. Giữ luồng mở cho đến khi dữ liệu đã được đọc, sau đó đóng lại.

Việc tạo EMF khả dụng trên các hệ điều hành được Aspose.Slides for Python via .NET hỗ trợ, nhưng quá trình render có thể khác nhau giữa các nền tảng khi font hoặc phụ thuộc đồ họa gốc không có sẵn. Cài đặt các font được sử dụng trong nội dung nguồn hoặc cấu hình các thay thế phù hợp, tuân thủ yêu cầu nền tảng cho Aspose.Slides, và xác thực kết quả trong ứng dụng tiêu thụ EMF mục tiêu. Các ứng dụng Linux và macOS thường có hỗ trợ hạn chế hoặc không đồng nhất cho việc hiển thị và chỉnh sửa metafile Windows.

Render Emoji Màu

Câu hỏi thường gặp

Aspose.Slides có hỗ trợ render slide có hoạt hình không?

Không. Phương thức Slide.get_image render một hình ảnh tĩnh của slide và không xuất hoạt hình.

Có thể xuất các slide ẩn thành ảnh không?

Có. Các slide ẩn có thể được render giống như các slide thường. Bao gồm chúng trong vòng xử lý, như trong ví dụ ở trên.

Bóng đổ và các hiệu ứng khác có được giữ lại trong ảnh slide không?

Có. Aspose.Slides render bóng đổ, độ trong suốt và các hiệu ứng đồ họa được hỗ trợ khác trong ảnh slide.