Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Tôi đã tạo một slide powerpoint master và tôi có một mẫu mà tôi muốn thay thế logo thông qua mã dựa trên máy khách. Vấn đề là bất cứ khi nào tôi chèn hình ảnh qua mã, hình ảnh sẽ được thay đổi kích thước nhưng không tôn trọng tỷ lệ chính xác, do đó nó bị biến dạng trong một số trường hợp. Tôi đã tìm thấy một câu trả lời tốt từ @Scanny trong liên kết này ở đây, điều này đã giúp tôi một chút nhưng không hoàn toàn vì bây giờ tôi có thể tải lên hình ảnh, nhưng chúng vẫn bị méo mó.

Đây là mã của tôi

import collections.abc
from datetime import datetime
from logging import PlaceHolder
from pptx import Presentation
from pptx.util import *
from PIL import Image
import win32com.client as win32
import os

TEXT_PLACEHOLDER_TYPE = 2
OBJECT_PLACEHOLDER_TYPE = 7
PICTURE_PLACEHOLDER_TYPE = 18

# ------------- FUNCTIONS -------------

def _add_image(slide, placeholder_id, image_url):
    placeholder = slide.placeholders[placeholder_id]
    # Calculate the image size of the image
    im = Image.open(image_url)
    width, height = im.size
    # Make sure the placeholder doesn't zoom in
    placeholder.height = height
    placeholder.width = width
    # Insert the picture
    placeholder = placeholder.insert_picture(image_url)
    available_width = placeholder.width
    available_height = placeholder.height
    image_width, image_height = placeholder.image.size
    placeholder_aspect_ratio = float(available_width) / float(available_height)
    image_aspect_ratio = float(image_width) / float(image_height)
   
    if placeholder_aspect_ratio > image_aspect_ratio:
        available_width = int(image_aspect_ratio * available_height)
    # ---otherwise shrink the height
    else:
        available_height = int(available_width/image_aspect_ratio)**

# ----------- PROGRAM START -----------


print("\n----PROGRAM STARTS HERE ----\n")

result_ppt = Presentation("data/TEMPLATE.pptx")
slide = result_ppt.slides[0]


for _ph in slide.placeholders:
    print(f"NAME:             {_ph.name}\n"
          f"PLACEHOLDER TYPE: {_ph.placeholder_format.type}\n"
          f"PLACEHODER ID:    {_ph.placeholder_format.idx}\n"
          f"ID:               {_ph.shape_id}\n"
          f"TYPE:             {_ph.shape_type}\n")


    # Handles IMAGE - Replacing company logo
    if _ph.placeholder_format.type == PICTURE_PLACEHOLDER_TYPE:
        # Makes sure we are only changing logos tagged with client_logo id
        if _ph.name == "client_logo":
            _add_image(slide=slide, placeholder_id=_ph.placeholder_format.idx, image_url="data/client_logo.png")


result_ppt.save("data/new_template.pptx")

Và nó ở đó! Tôi không thể làm cho hình ảnh của mình không bị bóp méo bất kể tôi làm gì. Một điều cuối cùng là bên trong hàm xử lý mà tôi đã thay đổi

placeholder.width = int(image_aspect_ratio * available_height)
available_width = int(image_aspect_ratio * available_height)

Bởi vì một số lý do sử dụng trình giữ chỗ. Width đã đặt các hình ảnh được đặt vào góc nên tôi không thể nhìn thấy nó.

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Hướng dẫn làm thế nào để bạn loại bỏ n khỏi danh sách trong Python 3? - LÀM Cách NÀO Để XÓA N Khỏi Danh Sách Trong Python 3?

Từ Python3 trở Đi >>> l = [name1, 7.3, 6.9, 6.6, 6.6, 6.1, 6.4, 7.3n] >>> Danh sách (Bản đồ (Lambda X: X.Strip (), L)) , 6.9, 6.6, 6.6, 6.1, 6.4, ...

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Hướng dẫn open () python - trâu mở ()

Nội phân Chínhcách 1: sử dụng ha opencách 2: mở file sử dụng bối cảnh quản lý

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Hướng dẫn làm thế nào để loại bỏ dấu ngoặc trong python - Cách xùaa dấu ngoặc Đơn trong python

TUY , 7, 17), (2013, 8, 7, 18), (2013, 8, 8, 16), ...

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Hướng dẫn linalg trong python

Dẫn nhậpTrong bài trước, Kteam đã GIỚI THIỆU MACHINE LEARNING VÀ CÀI ĐẶT NUMPY , giúp các bạn một phần hiểu được bản chất của Machine ...

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Hướng dẫn regex trong python

RegEx hay biểu thức chính quy (Regular Expression) là một chuỗi ký tự tạo thành một biểu mẫu tìm kiếm (search pattern). RegEx được sử dụng để kiểm tra xem một ...

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh

Hướng dẫn python-pptx resize image - python-pptx thay đổi kích thước hình ảnh