如何使用openpyxl更改图片大小

时间:2019-02-12 01:36:49

标签: python openpyxl

有。 我想使用openpyxl更改图片的大小。 宽度= 11.21厘米。 高度= 7.69厘米。

或者我要更改与单元格相同的图片大小。

我的代码如下。它使尺寸非常小的图片。 你能帮我吗?

from openpyxl import load_workbook
from openpyxl.drawing.image import Image

filename="1.xlsx"
wb = load_workbook(filename)
ws = wb.worksheets[0]
img = Image('13.5.jpg')
img.width = 11.21
img.height = 7.69
ws.add_image(img, 'B13')
wb.save('1.xlsx')
print("done")

2 个答案:

答案 0 :(得分:1)

为了澄清其他问题(keineahnung2345具有正确的帖子,我的只是补充),这是设置图像大小的方法:

img = openpyxl.drawing.image.Image('filelocation.png')
img.height = # insert image height in pixels as float or int (e.g. 305.5)
img.width= # insert image width in pixels as float or int (e.g. 405.8)
img.anchor = 'A1' # where you want image to be anchored/start from
sheet.add_image(img) # adding in the image

同样,请务必检查dpi(它是像素数量的乘数)。 您可以通过在excel中单击图像并检查属性来检查图像大小,该属性应为英寸或厘米。

对于使用英寸的任何人,这是英寸到像素的转换器: https://www.unitconverters.net/typography/inch-to-pixel-x.htm

可以从keineahnung2345的选定答案中找到厘米转换器。

答案 1 :(得分:0)

openpyxl.drawing.image.Image基于PIL.Image。在PIL.Image中,图像尺寸的单位是像素。因此,您首先应该计算图像的宽度和高度(以像素为单位)。

公式为(参考:Pixel to Centimeter?):

  

像素= cms * dpi / 2.54

您可以通过img.info['dpi']获得该图像的dpi。