首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xlsxwriter:如何在单元格中对图像进行中心化

xlsxwriter:如何在单元格中对图像进行中心化
EN

Stack Overflow用户
提问于 2018-07-21 18:13:37
回答 1查看 2.3K关注 0票数 4

Im分别使用set_column和set_row设置列和行的大小,如下所示:

代码语言:javascript
复制
my_worksheet.set_column('A:KK', 17)
my_worksheet.set_row(0, 99.6)

我有这样的代码可以将任意大小的图像打印到单元格中:

代码语言:javascript
复制
width, height = im.size
# Calculate scale: Problematic
x_scale = IMAGE_CELL_SIZE_PX[0]/float(width) 
y_scale = (IMAGE_CELL_SIZE_PX[1] - 5.0)/float(height)
# Calculate offset: Problematic
x_offset = ((IMAGE_CELL_SIZE_PX[0] - width) / 2.0) / x_scale
y_offset = ((IMAGE_CELL_SIZE_PX[1] - 5 - height) / 2.0) / y_scale
worksheet.insert_image(row, col, image_path, {'x_offset': x_offset, 'y_offset': y_offset, 'x_scale': x_scale, 'y_scale': y_scale})

问题是它不起作用。图像大小是错误的,大多数时候图片都是远离中心的。好像我错过了一个学期。主要问题是,我无法找到一种方法,以机器无关的方式将像素转换为Excel和xlsxwriter长度单位。

我只能通过set_column设置单元格的宽度,该单元格采用excel单元,我知道像素的图像维数(来自枕头Image.size)。显然,两者之间的转换是机器依赖的。有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2018-07-23 09:52:20

您可以使用worksheet._size_col()worksheet._size_row() (请看这里的代码)将基于零的列或行索引转换为像素大小。

另一件需要注意的事情是,Excel基于新闻部96对图像进行缩放。如果图像有另一个DPI,您应该考虑缩放。这就是在内部中使用XlsxWriter来解释Excel的原因:

代码语言:javascript
复制
    # Scale by non 96dpi resolutions.
    width *= 96.0 / x_dpi
    height *= 96.0 / y_dpi
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51458844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档